将JAVA HOME作为参数传递给mvn

将JAVA HOME作为参数传递给mvn,java,maven,command-line,Java,Maven,Command Line,我想知道是否可以将JAVA_HOME作为参数传递给mvn命令行。我几乎找遍了所有地方,但找不到答案 我知道我们可以使用export设置JAVA_HOME,但如果可能的话,我需要将其作为参数传递。比如: mvn install -DJava_Home=/usr/java/jdk-1.7.0 不,不是直接的,但是在我的机器上查看mvn.bat,我看到了这个有希望的片段: @REM Execute a user defined script before this one if not "%MAV

我想知道是否可以将JAVA_HOME作为参数传递给mvn命令行。我几乎找遍了所有地方,但找不到答案

我知道我们可以使用export设置JAVA_HOME,但如果可能的话,我需要将其作为参数传递。比如:

 mvn install -DJava_Home=/usr/java/jdk-1.7.0

不,不是直接的,但是在我的机器上查看mvn.bat,我看到了这个有希望的片段:

@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
因此,您可以在mavenrc_pre脚本文件中覆盖任何您喜欢的变量,尽管我意识到这不允许您从命令行覆盖javahome。
最糟糕的情况是,mvn是一个简单的脚本文件,您可以向其中添加该选项。还请注意,简单地重写JAVA_HOME可能并不总是产生预期的结果,因为在许多系统上,JAVA_HOME\bin正在运行。这意味着,即使覆盖它,以前的jvm仍将在路径上,这可能会导致意外的结果。

我这样做的另一种方式是:(我的大多数项目都在Java 7上,但有少数项目在Java 8上)

1) 将新的环境变量JAVA8_HOME添加到.zshrc(或类似文件)中

2) 复制“mvn”可执行文件并将其称为“mvn8”

3) 将“mvn8”中的“JAVA_HOME”替换为“JAVA8_HOME”


现在,
mvn8 clean install
应该可以正常工作了。

感谢您的详细回复。我完全同意覆盖JavaHome可能不会产生预期的结果,您所说的是有道理的。让我们看看是否可以有更多的贡献者,这样我们就会有一个普遍的共识,那就是这是不可能做到的。非常感谢你的帮助!