将 JAVA HOME 作为参数传递给 mvn

2022-09-03 15:31:04

我想知道是否可以将JAVA_HOME作为参数传递给mvn命令行。我几乎到处都搜索过,但找不到答案。

我知道我们可以使用导出设置JAVA_HOME,但是如果可能的话,我需要将其作为参数传递。像这样:

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

答案 1

我这样做的另一个黑客方式是:(我的大部分项目都在Java 7上,但在java 8上有少数项目)

1) 将新的 env 变量 JAVA8_HOME 添加到您的 .zshrc ( 或类似 )

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

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

现在,应该只是工作。mvn8 clean install


答案 2

不,不是直接的,但是在我的机器上查看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脚本文件中覆盖任何你喜欢的变量,尽管我意识到这不会让你从命令行覆盖java home。最坏的情况是,mvn是一个简单的脚本文件,您可以向其添加该选项。另请注意,简单地覆盖JAVA_HOME可能并不总是产生预期的结果,因为在许多系统上JAVA_HOME\bin在路径上。这意味着即使您覆盖它,以前的jvm仍将位于路径上,这可能会导致意外的结果。


推荐