MAVEN_HOME,MVN_HOME或M2_HOME


84

什么是正确的Maven的环境变量名:MAVEN_HOMEMVN_HOMEM2_HOME

我发现一些细节有关MAVEN_HOME,并M2_HOME 在这里。但是我也看到了MVN_HOME周围。

Answers:


62

我个人从来没有发现设置它有用M2_HOME

重要的是您的$ PATH环境。劫持Danix的答案的一部分,您需要做的是:

export PATH=/Users/xxx/sdk/apache-maven-3.0.5/bin:$PATH

mvn脚本计算M2_HOME为你反正它的价值。


3
+1。我什至要说M2_HOME过去的设置总是会导致奇怪的错误,主要是NoClassDefFoundError因为该mvn命令可以在PATH中找到,但可以通过找到另一个Maven版本M2_HOME。自从我停止设置env var以来,我的生活变得更好了,只依靠将.../bin/mvn的目录添加到PATHMaven并让其自动检测事物。
巴蒂斯特·马修斯

6
“我个人从来没有发现设置M2_HOME有用。” 你是对的。那已经过时了:stackoverflow.com/a/47712646/270371
davidxxx '19


22

这是我的Maven设置。您可以使用它作为示例。您不需要任何其他东西即可使用Maven。

M2_HOME用于Maven 2和3

export M2_HOME=/Users/xxx/sdk/apache-maven-3.0.5
export M2=$M2_HOME/bin
export MAVEN_OPTS="-Xmx1048m -Xms256m -XX:MaxPermSize=312M"
export PATH=$M2:$PATH

8

MAVEN_HOME用于maven 1M2_HOME 用于定位maven 2。具有两个不同的_HOME变量意味着可以在同一台计算机上同时运行这两个变量。而且,如果您检查旧的mvn.cmd脚本,它们具有类似的内容,

@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM     e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------

看到那个 @REM M2_HOME - location of maven2's installed home dir

无论如何,根据文档,maven 3.5现在已弃用此模式。

基于与安装的不同Maven版本相关的M2_HOME的使用问题并为简化起见,已删除M2_HOME的用法,并且不再支持MNG-5823MNG-5836MNG-5607

所以现在mvn.cmd看起来像

@REM -----------------------------------------------------------------------------
@REM Apache Maven Startup Script
@REM
@REM Environment Variable Prerequisites
@REM
@REM   JAVA_HOME          Must point at your Java Development Kit installation.
@REM   MAVEN_BATCH_ECHO  (Optional) Set to 'on' to enable the echoing of the batch commands.
@REM   MAVEN_BATCH_PAUSE (Optional) set to 'on' to wait for a key stroke before ending.
@REM   MAVEN_OPTS        (Optional) Java runtime options used when Maven is executed.
@REM   MAVEN_SKIP_RC     (Optional) Flag to disable loading of mavenrc files.
@REM -----------------------------------------------------------------------------

因此,您需要正确设置JAVA_HOME。按照新的安装指南(截至2017年12月29日),只需将maven bin目录路径添加到PATH变量即可。它应该可以解决问题。

例如: export PATH=/opt/apache-maven-3.5.2/bin:$PATH


1

我偶然发现了巧克力布丁M2_HOME。我想找到settings.xml

当前的方法settings.xml是转到%USERPROFILE%。那里.m2包含一个目录,可以在其中找到settings.xml

永远不要使用M2_HOME。自Apache Maven 3.5.0起不支持该功能。

细节:

基于M2_HOME与安装的不同Maven版本相关的使用问题,并且为了简化操作,M2_HOME已删除,不再支持MNG-5823MNG-5836MNG-5607的用法。

Windows用户的重要更改:的用法%HOME%已由MNG-6001代替%USERPROFILE%

来源:https : //maven.apache.org/docs/3.5.0/release-notes.html#overview-about-the-changes


-1

$M2_HOME有时用于例如安装 Takari Extensions for Apache Maven

寻找$M2_HOME价值的一种方法是搜索mvn

sudo find / -name "mvn" 2>/dev/null

而且,可能是: /opt/maven/


我在链接页面上没有看到任何内容表明M2_HOMETakari中的内容已被读取。它只是在您可以运行的Shell命令示例中使用占位符变量。
Jesse Glick

-2

我已经通过以下方法解决了相同的问题:

export M2_HOME=/usr/share/maven

2
尽管这段代码可以解决问题,但包括解释如何以及为什么解决该问题的说明,确实可以帮助提高您的帖子质量,并可能导致更多的投票。请记住,您将来会为读者回答问题,而不仅仅是现在问的人。请编辑您的答案以添加说明,并指出适用的限制和假设。
嘟嘟声

-7

我们有M2_HOME,MAVEN_HOME,M3_HOME,都可以在市场
上买到。以前,M2_HOME是所有人用作标准的唯一环境变量。
但是,由于MAVEN_Home是最新版本,因此已成为标准配置,但一些旧工具仍在尝试仅查找M2_HOME,
因此我们应该同时拥有M2_HOME,MAVEN_HOME以使用新旧工具来维持。
M2_HOME也可以同时使用

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.