Maven在不同操作系统上如何安装?
大家好,我是袁庭新。Maven是一个重要的工具,还有很多初学者竟然不知道如何安装Maven?这篇文章将系统介绍如何在Windows、macOS、Linux操作系统上安装Maven。
Maven是一个基于Java的项目管理工具。因此,最基本的要求是在计算机上安装了JDK,JDK的安装这里暂不介绍。
1.Maven软件下载
使用Maven管理工具,我们首先要到官网去下载Maven的安装软件。Maven下载网址http://maven.apache.org/download.cgi,这里我们以Maven 3.8.4为例。

在编写这套教程的时候,目前最新版是apache-maven-3.8.4-bin.zip或apache-maven-3.8.4-bin.tar.gz版本,根据操作系统提前下载好了对应的Maven版本。
2.Maven软件安装
Apache Maven的安装过程很简单,只需解压存档文件(开箱即用),并使用mvn命令将bin文件夹添加到Path环境变量中即可。
在任何目录中提取分发文件(即将Maven解压到合适的位置即可):
unzip apache-maven-3.8.4-bin.zip
或者:
tar xzvf apache-maven-3.8.4-bin.tar.gz
解压文件尽量不要放在含有中文或特殊字符或有空格的目录下(比如解压到H:\software目录下)。Maven安装包解压后目录结构如下:

解压后得到apache-maven-3.8.4目录,对该目录下的文件解释说明见下:
| 目录 | 描述 |
| bin | 存放了Maven的命令文件,含有mvn运行的脚本 |
| boot | 存放了一些Maven本身的引导程序,如plexus-classworlds类加载器框架,Maven使用该框架加载自己的类库 |
| conf | 存放了Maven的一些配置文件,如settings.xml配置文件 |
| lib | 存放了Maven本身运行所需的一些jar包文件 |
3.Maven环境变量配置
将解压Maven的apache-maven-3.8.4目录下的bin目录添加到Path环境变量中。
3.1 Windows配置Maven环境变量
1.打开系统属性(WinKey + Pause),选择【高级】选项卡下的【环境变量】选项,新建一个【MAVEN_HOME】变量名,变量值为Maven的安装目录。
H:\software\apache-maven-3.8.4
2.将MAVEN_HOME添加到Path系统变量中。
%MAVEN_HOME%\bin
3.打开一个新的命令提示符(Winkey + R然后键入cmd)并运行mvn -v以验证Maven是否配置成功。
# 查看Maven工具的版本信息
mvn -v
# 或者使用以下命令也可查看Maven工具的版本信息
mvn -version
3.2 Unix配置Maven环境变量
基于Unix的操作系统(Linux、Solaris和Mac OS X)配置方式相同,下面以Mac OS系统为例进行配置说明。
3.2.1 MAC配置Maven环境变量步骤
1.打开Mac终端,输入以下命令编辑用户主目录下的.bash_profile启动脚本文件(或.zshrc启动脚本文件),具体根据你使用的Shell。使用vim编辑器编辑启动脚本。
vim ~/.bash_profile
注意:如果指定的文件不存在,则输入touch ~/.bash_profile 命令创建新的空白文件,然后再输入上面的命令。
2.打开.bash_profile文件后,按下i键进入到输入模式,在启动脚本下添加如下两行命令。
export MAVEN_HOME=/Users/yuanxin/Documents/ProgramSoftware/apache-maven-3.8.4
export PATH=$MAVEN_HOME/bin:$PATH
3.然后按下esc键退出插入模式,然后再输入:wq命令,敲击回车按键,保存并退出该文件。
4.为了让我们刚刚添加的环境变量生效,使用source命令加载环境变量,使.bash_profile文件生效。
source ~/.bash_profile
5.配置完成后,你可以通过运行以下命令来验证Maven安装是否成功。
yuanxin@yuanxindeMacBook-Pro ~ % mvn -v
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: /Users/yuanxin/Documents/ProgramSoftware/apache-maven-3.8.4
Java version: 11.0.12, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-11.0.12.jdk/Contents/Home
Default locale: zh_CN_#Hans, platform encoding: UTF-8
OS name: "mac os x", version: "11.4", arch: "x86_64", family: "mac"
6.如果输出结果如下所示,证明Maven配置成功。如果没有,检查路径是否正确,或者版本号名称等。

3.2.2 问题zsh: command not found: mvn解决
如果出现,新打开的终端输入mvn -v指令,报"zsh: command not found: mvn"错,然后重新输入source ~/.bash_profile指令后,又恢复正常的问题。是由于Mac系统的升级,新的环境变量读取方式走的是zsh,所以才会存在以上问题。解决的方法见下。
1.在Mac的终端执行以下命令。
vi ~/.zshrc
2.在.zshrc文件末尾追加以下内容(如果没有该文件则直接创建,并追加以下内容保存即可)。
source ~/.bash_profile
3.最后再次执行.zshrc让配置生效。
source ~/.zshrc
3.2.3 Mac上有3处可以设置环境变量
具体介绍见下表:
| 文件 | 描述 |
| /etc/profile | 系统全局变量,系统启动即加载该文件的配置(不建议添加) |
| /etc/bashrc | 所有类型的bash shell都会读取该文件的配置 |
| ~/.bash_profile | 配置用户级环境变量,在系统用户文件夹下创建,当用户登录时,该文件会被执行且仅执行一次 |
4.总结
最后做一个总结,这是一篇Maven安装指南的教程,主要介绍了在Windows、macOS、Linux系统上安装Maven的步骤。核心步骤总结如下:
- 下载Maven:从Apache官网下载对应系统的Maven安装包。
- 解压安装:解压安装包,避免中文或特殊字符路径。
- 配置环境变量:Windows需设置MAVEN_HOME并添加到Path;Unix系统需编辑.bash_profile或.zshrc文件添加环境变量。
- 验证安装:通过mvn -v命令验证Maven是否配置成功。
相关文章:
Maven在不同操作系统上如何安装?
大家好,我是袁庭新。Maven是一个重要的工具,还有很多初学者竟然不知道如何安装Maven?这篇文章将系统介绍如何在Windows、macOS、Linux操作系统上安装Maven。 Maven是一个基于Java的项目管理工具。因此,最基本的要求是在计算机上安…...
maven如何从外部导包
1.找到你项目的文件位置,将外部要导入的包复制粘贴进你当前要导入的项目下。 2.从你的项目目录下选中要导入的包的pom文件即可导包成功 注意一定是选中对应的pom文件 导入成功之后对应的pom.xml文件就会被点亮...
如何在 Hive SQL 中处理复杂的数据类型?
目录 一、复杂数据类型简介 二、创建表时使用复杂数据类型 三、插入数据到复杂数据类型的表 四、查询复杂数据类型...
数据结构:DisjointSet
Disjoint Sets意思是一系列没有重复元素的集合。一种常见的实现叫做,Disjoint-set Forest可以以接近常数的时间复杂度查询元素所属集合,用来确定两个元素是否同属一个集合等,是效率最高的常见数据结构之一。 Wiki链接:https://en…...
中国省级产业结构高级化及合理化数据测算(2000-2023年)
一、数据介绍 数据名称:中国省级产业结构高级化、泰尔指数 数据年份:2000-2023年 数据范围:31个省份 数据来源:中国统计年鉴、国家统计局 数据整理:内含原始版本、线性插值版本、ARIMA填补版本 数据说明…...
Nginx不使用域名如何配置证书
如果你不打算使用域名而是使用 IP 地址来配置 Nginx 的 SSL 证书,你会遇到一个问题,因为 SSL/TLS 证书通常是为特定的域名颁发的,而不是 IP 地址。虽然可以为 IP 地址生成证书,但大多数证书颁发机构(CA)不支…...
Perturbed-Attention Guidance(PAG) 笔记
Self-Rectifying Diffusion Sampling with Perturbed-Attention Guidance Github 摘要 近期研究表明,扩散模型能够生成高质量样本,但其质量在很大程度上依赖于采样引导技术,如分类器引导(CG)和无分类器引导ÿ…...
自动驾驶控制与规划——Project 6: A* Route Planning
目录 零、任务介绍一、算法原理1.1 A* Algorithm1.2 启发函数 二、代码实现三、结果分析四、效果展示4.1 Dijkstra距离4.2 Manhatten距离4.3 欧几里德距离4.4 对角距离 五、后记 零、任务介绍 carla-ros-bridge/src/ros-bridge/carla_shenlan_projects/carla_shenlan_a_star_p…...
通俗易懂之线性回归时序预测PyTorch实践
线性回归(Linear Regression)是机器学习中最基本且广泛应用的算法之一。它不仅作为入门学习的经典案例,也是许多复杂模型的基础。本文将全面介绍线性回归的原理、应用,并通过一段PyTorch代码进行实践演示,帮助读者深入…...
[离线数仓] 总结二、Hive数仓分层开发
接 [离线数仓] 总结一、数据采集 5.8 数仓开发之ODS层 ODS层的设计要点如下: (1)ODS层的表结构设计依托于从业务系统同步过来的数据结构。 (2)ODS层要保存全部历史数据,故其压缩格式应选择压缩比率,较高的,此处选择gzip。 CompressedStorage - Apache Hive - Apac…...
页面顶部导航栏(Navbar)的功能(Navbar/index.vue)
这段代码是一个 Vue.js 组件,实现了页面顶部导航栏(Navbar)的功能。我将分块分析它的各个部分: 模板 (Template): <!-- spid-admin/src/layout/components/Navbar/index.vue --> <template><div class"navb…...
thinnkphp5.1和 thinkphp6以及nginx,apache 解决跨域问题
ThinkPHP 5.1 使用中间件设置响应头 ThinkPHP 5.1 及以上版本支持中间件,可以通过中间件统一设置跨域响应头。 步骤: 创建一个中间件文件,例如 CorsMiddleware.php: namespace app\middleware;class CorsMiddleware {public fu…...
vue2新增删除
(只是页面实现,不涉及数据库) list组件: <button click"onAdd">新增</button><el-table:header-cell-style"{ textAlign: center }" :cell-style"{ textAlign: center }":data&quo…...
测试ip端口-telnet开启与使用
前言 开发过程中我们总会要去测试ip通不通,或者ip下某个端口是否可以联通,为此我们可以使用telnet 命令来实现。 一、telnet 开启 可能有些人使用telnet报错,不是内部命令,可以如下开启: 1、打开控制面板ÿ…...
Python爬虫基础——XPath表达式
首先说一下这节内容在学习过程中存在的问题吧,在爬取百度网页文字时,出现了问题,就是通过表达式在网页搜索中可以定位,但是通过代码无法定位,请教了一位老师,他说是动态链接,目前这部分内容比较…...
ansible-性能优化
一. 简述: 搞过运维自动化工具的人,肯定会发现很多运维伙伴们经常用saltstack和ansible做比较,单从执行效率上来说,ansible确实比不上saltstack(ansible使用的是ssh,salt使用的是zeromq消息队列[暂没深入了解]),但其实…...
高等数学学习笔记 ☞ 一元函数微分的基础知识
1. 微分的定义 (1)定义:设函数在点的某领域内有定义,取附近的点,对应的函数值分别为和, 令,若可以表示成,则称函数在点是可微的。 【 若函数在点是可微的,则可以表达为】…...
前后端实现防抖节流实现
在前端和 Java 后端中实现防抖(Debounce)和节流(Throttle)主要用于减少频繁请求或事件触发对系统的压力。前端和后端的实现方式有些不同,以下是两种方法的具体实现: 1. 前端实现防抖和节流 在前端中&…...
【笔记】算法记录
1、求一个数的素因子(试除法) // 获取一个数的所有素因子 set<int> getPrimeFactors(int num) {set<int> primeFactors;for (int i 2; i * i < num; i) {while (num % i 0) {primeFactors.insert(i);num / i;}}if (num > 1) {prime…...
【网络云SRE运维开发】2025第2周-每日【2025/01/08】小测-【第8章 STP生成树协议】理论和实操解析
文章目录 一、选择题二、理论题三、实操题 【网络云SRE运维开发】2025第2周-每日【2025/01/08】小测-【第8章 STP生成树协议】理论和实操解析 一、选择题 生成树协议的主要作用是 B. 防止网络环路解释:生成树协议(STP)的主要目的是防止网络中…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...
在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7
在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤: 第一步: 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为: // 改为 v…...
相关类相关的可视化图像总结
目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系,可直观判断线性相关、非线性相关或无相关关系,点的分布密…...
Django RBAC项目后端实战 - 03 DRF权限控制实现
项目背景 在上一篇文章中,我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统,为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…...
网页端 js 读取发票里的二维码信息(图片和PDF格式)
起因 为了实现在报销流程中,发票不能重用的限制,发票上传后,希望能读出发票号,并记录发票号已用,下次不再可用于报销。 基于上面的需求,研究了OCR 的方式和读PDF的方式,实际是可行的ÿ…...
