将 JAVA HOME 作为参数传递给 mvn
2022-09-03 15:31:04
我想知道是否可以将JAVA_HOME作为参数传递给mvn命令行。我几乎到处都搜索过,但找不到答案。
我知道我们可以使用导出设置JAVA_HOME,但是如果可能的话,我需要将其作为参数传递。像这样:
mvn install -DJava_Home=/usr/java/jdk-1.7.0
我想知道是否可以将JAVA_HOME作为参数传递给mvn命令行。我几乎到处都搜索过,但找不到答案。
我知道我们可以使用导出设置JAVA_HOME,但是如果可能的话,我需要将其作为参数传递。像这样:
mvn install -DJava_Home=/usr/java/jdk-1.7.0
我这样做的另一个黑客方式是:(我的大部分项目都在Java 7上,但在java 8上有少数项目)
1) 将新的 env 变量 JAVA8_HOME 添加到您的 .zshrc ( 或类似 )
2)复制“mvn”可执行文件并将其称为“mvn8”
3) 将“mvn8”中的“JAVA_HOME”替换为“JAVA8_HOME”
现在,应该只是工作。mvn8 clean install
不,不是直接的,但是在我的机器上查看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仍将位于路径上,这可能会导致意外的结果。