Maven Release Plugin如何为嵌套Maven调用指定Java Home
解决方案
问题根因
你之前传入的-DjavaHome参数仅作用于外层release:prepare命令的运行进程,而Maven Release Plugin执行后续mvn clean verify时会单独fork独立子进程,默认会读取系统全局的JAVA_HOME环境变量,不会继承外层传入的参数,因此参数不生效。
解决方法
方法1:单次执行临时指定
执行命令时通过arguments参数将javaHome透传给所有fork的子进程即可,命令如下:
mvn release:prepare -Darguments="-DjavaHome=C:\Users\X\.jdks\corretto-1.8.0_312"
如果是在IntelliJ的「执行Maven目标」弹窗中运行,直接把上述整段命令填入输入框即可生效。
方法2:POM文件永久配置
如果需要固定该项目的发布Java版本,直接在项目POM中配置Maven Release Plugin的参数即可,无需每次执行手动输入:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>替换为你的插件实际使用版本</version> <configuration> <javaHome>C:\Users\X\.jdks\corretto-1.8.0_312</javaHome> <arguments>-DjavaHome=C:\Users\X\.jdks\corretto-1.8.0_312</arguments> </configuration> </plugin> </plugins> </build>
如果是团队协作场景,为了适配不同成员的本地JDK路径,可以将路径定义为可配置属性,成员在本地settings.xml中自行配置对应路径即可,无需修改公共POM文件。
内容的提问来源于stack exchange,提问作者Flumen
相关产品推荐
相关产品推荐

