我想知道是否可以将 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
我这样做的另一种 hacky 方式:(我的大部分项目都在 Java 7 上,但在 Java 8 上很少)
1)添加一个新的环境变量 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 仍将在路径上,这可能会导致意外结果。