Maven 环境变量:M2_HOME、MAVEN_HOME 和 PATH
1、概览
在 Apache Maven 安装的过程中,我们需要配置各种环境变量,以确保 Maven 能正常运行。本文将带你了解与之相关的三个变量:M2_HOME
、MAVEN_HOME
和 PATH
。
先来看看如何配置最早版本的 Maven。
注意:Apache Maven 1.x 和 Maven 2.x 已停止使用。第 2 节和第 3 节展示的配置仅供参考,不提倡使用。
2、Maven 1.x
下载并解压 Maven 压缩文件,进入到解压目录的 bin
文件夹。在这个目录中,你可以尝试执行一下 maven
命令,看看它是否能正常工作:
$ maven -v
该命令输出如下,表示我们缺少一个必需的环境变量:
MAVEN_HOME must be set
MAVEN_HOME
环境变量指定了 Maven 目录(解压后的)的位置,而且该环境变量是必须的。
在系统中添加这个环境变量后,再次运行之前的命令(需要新的终端中运行):
$ maven -v
结果如下:
__ __
| \/ |__ _Apache__ ___
| |\/| / _` \ V / -_) ' \ ~ intelligent projects ~
|_| |_\__,_|\_/\___|_||_| v. 1.1
现在,我们可以在系统中使用 Maven 了。
3、Maven 2.x
下载并解压 Mavem,然后进入到 bin
目录并执行版本信息命令:
$ mvn -v
与上一节不同,Maven 2.x 不会提示 MAVEN_HOME
或 M2_HOME
变量未设置,因为版本 2 将此变量设为可选项。该命令的输出如下:
Apache Maven 2.2.1 (r801777; 2009-08-06 21:16:01+0200)
Java version: 1.8.0_412
Java home: /home/.sdkman/candidates/java/8.0.412.fx-librca/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux"
在 Maven 2.x 中,MAVEN_HOME
变量更名为 M2_HOME
。这意味着要指定 Maven 2.x 的安装位置,我们需要设置 M2_HOME
环境变量。
4、Maven 3.x
下载并解压缩后,进入 bin
目录。执行如下命令查看 Maven 的版本号:
$ mvn -v
输出结果如下:
Apache Maven 3.9.8 (36645f6c9b5079805ea5009217e36f2cffd34256)
Maven home: /home/dev-tools/apache-maven-3.9.8
Java version: 1.8.0_412, vendor: BellSoft,
runtime: /home/.sdkman/candidates/java/8.0.412.fx-librca/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux"
与版本 2 类似,Maven 3.x 将 MAVEN_HOME
变量作为可选变量。在 Maven 3.x 中,MAVEN_HOME
取代 M2_HOME
,成为用于指定安装位置的变量。
5、对比
各个 Maven 版本及其环境变量之间的差异如下表所示:
Maven 版本 | 变量名称 | 必须 |
---|---|---|
1.x | MAVEN_HOME | 是 |
2.x | M2_HOME | 可选 |
3.x | MAVEN_HOME | 可选 |
6、配置 PATH 变量
如前所述,我们在安装目录的 bin
目录中执行了 Maven 命令。为了能在 bin
目录之外的任意地方运行 Maven 命令,我们需要将其添加到 PATH
环境变量中。
编辑 /etc/profile
配置文件,添加如下内容:
# Maven 安装目录
export MAVEN_HOME=/root/apache-maven-3.9.1
# 把 bin 目录设置到 PATH 环境变量
export PATH=$PATH:$MAVEN_HOME/bin
配置完成后,还需要执行一条命令来使其生效:
source /etc/profile
如上,我们就能够在系统的任何地方运行 maven
命令。
7、总结
本文介绍了 Maven 安装过程中可能会涉及的三个环境变量:M2_HOME
、MAVEN_HOME
和 PATH
,M2_HOME
和 MAVEN_HOME
用于指定 Maven 安装目录,具体取决于版本,PATH 变量用于使 maven
命令在任意目录可用。
Ref:https://www.baeldung.com/java-maven-environment-variables