我想知道是否可以将JAVA_HOME作为参数传递给mvn命令行。我几乎到处搜索,但找不到答案。
我知道我们可以使用export设置JAVA_HOME,但如果可能,我需要将其作为参数传递。类似的东西:
mvn install -DJava_Home=/usr/java/jdk-1.7.0
答案 0 :(得分:5)
我这样做的另一种黑客方式:(我的大部分项目都是Java 7,但是很少有关于Java 8的项目)
1)将新的env变量JAVA8_HOME添加到.zshrc(或类似的)
2)复制'mvn'可执行文件并将其命名为'mvn8'
3)将'JAVA_HOME'替换为'mvn8'中的'JAVA8_HOME'
现在,mvn8 clean install
应该可以正常工作。
答案 1 :(得分:4)
不,不是直接,但在我的机器上查看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仍然会在路径上,这可能会导致意外的结果。