1. 概述

在安装 Apache Maven 的过程中,我们需要配置多个环境变量以确保 Maven 正常运行。本文将重点分析三个关键变量:M2_HOMEMAVEN_HOMEPATH,并探讨它们在不同 Maven 版本中的影响机制。

⚠️ 注意:Apache Maven 1.x 和 2.x 已停止维护。第 2、3 节的配置仅作演示说明,不推荐实际使用。

2. Maven 1.x 时代的配置

下载并解压 Maven 二进制包后,进入其 bin 目录执行命令测试:

$ maven -v

系统会直接报错:

MAVEN_HOME must be set

这说明 MAVEN_HOME 环境变量 在 Maven 1.x 中有两个作用:

  • 指向 Maven 的安装目录
  • 强制要求 的变量

设置该变量后再次执行命令:

$ maven -v

成功输出版本信息:

 __  __
|  \/  |__ _Apache__ ___
| |\/| / _` \ V / -_) ' \  ~ intelligent projects ~
|_|  |_\__,_|\_/\___|_||_|  v. 1.1

3. Maven 2.x 的变更

同样解压 Maven 2.x 二进制包后,在 bin 目录执行:

$ mvn -v

与 1.x 不同,2.x 不再强制要求 设置 MAVEN_HOMEM2_HOME。输出类似:

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_HOME 改为 M2_HOME
  • ✅ 变量变为 可选(非强制)
  • ❌ 但若需指定安装路径,仍需设置 M2_HOME

4. Maven 3.x 的演进

解压 Maven 3.x 后执行版本检查:

$ 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"

核心改进:

  • ✅ 重新启用 MAVEN_HOME 作为主变量
  • ✅ 替代了 2.x 的 M2_HOME
  • ✅ 仍保持 可选 属性

5. 配置对比总结

下表清晰展示了三个版本的差异:

Maven 版本 环境变量名 是否必需
1.x MAVEN_HOME ✅ 是
2.x M2_HOME ❌ 否
3.x MAVEN_HOME ❌ 否

6. PATH 变量的配置方法

前文演示的命令都是在 Maven 的 bin 目录下执行的。要能在任意目录使用 Maven 命令,必须将 bin 目录添加到 PATH 环境变量中。具体配置方式因操作系统而异:

配置完成后,即可在系统任何位置执行 Maven 命令。

7. 关键结论

通过本文分析,我们厘清了三个环境变量的本质区别:

  1. 目录指向变量

    • MAVEN_HOME:用于 Maven 1.x 和 3.x
    • M2_HOME:仅用于 Maven 2.x
    • 现代版本(3.x)中两者均可选
  2. PATH 变量

    • 控制 Maven 命令的全局可用性
    • 必须包含 Maven 的 bin 目录路径

💡 实践建议:当前使用 Maven 3.x 时,只需确保 PATH 包含 bin 目录即可,MAVEN_HOME 已非必需——但设置它能明确标识安装路径,便于维护。


原始标题:Difference Between M2_HOME, MAVEN_HOME and using the PATH variable | Baeldung