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 Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...
论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...
从零开始了解数据采集(二十八)——制造业数字孪生
近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...
命令行关闭Windows防火墙
命令行关闭Windows防火墙 引言一、防火墙:被低估的"智能安检员"二、优先尝试!90%问题无需关闭防火墙方案1:程序白名单(解决软件误拦截)方案2:开放特定端口(解决网游/开发端口不通)三、命令行极速关闭方案方法一:PowerShell(推荐Win10/11)方法二:CMD命令…...
python打卡第47天
昨天代码中注意力热图的部分顺移至今天 知识点回顾: 热力图 作业:对比不同卷积层热图可视化的结果 def visualize_attention_map(model, test_loader, device, class_names, num_samples3):"""可视化模型的注意力热力图,展示模…...
