我想执行一个编译java1的maven版本。8在jdk 1上运行的Jenkins安装代码。7
我有一个用java 1编译的项目。8使用JDK Parameter Plugin。它在进行常规构建时起作用。
当我使用maven release插件进行maven发布时,它会使用java 1 fork一个JVM。7而不是插件上指定的版本。我猜它需要环境中的Java版本。
如果我将该作业的JAVA_HOME设置为1。8、工作
我试图找到一个解决方案,在那里我不必覆盖所有的作业中的JAVA_HOME。
我尝试使用similar post的解决方案,通过强制编译器版本来修复OP问题:
<properties>
<jee.level>1.8</jee.level>
<jdk.level>1.8</jdk.level>
</properties>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${jee.level}</source>
<target>${jdk.level}</target>
</configuration>
</plugin>
但最后我得到的是
[INFO] [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project redeem-commons-test: Fatal error compiling: invalid target release: 1.8 -> [Help 1]
任何帮助将不胜感激。
2条答案
按热度按时间nfg76nw01#
到目前为止,我发现的最好的解决方案是升级运行jenkins的容器的JDK,并向后者添加一个JAVA_OPTS,以支持以前的JDK版本。例如
-Djava.version=1.7
通过这种方式,我可以构建并发布java 7或java 8的项目。
6yt4nkrj2#
一个类似但略有不同的方法是让Jenkins拥有当前的JVM,并在Jenkins机器上的特定文件夹中安装一个备用JVM。
然后在你的项目中,你可以将JVM机器定义为一个名为
Inject environment variables
的前置步骤,并在Properties Content
上设置:这样做的好处是,您不需要修改所有旧的现有项目都在使用以前的JVM,而只需在这个项目上选择不同的JVM。
请注意,这种方法是由于尽管Jenkins允许使用多个JDK,但它们对于标准
mvn clean install
来说工作正常,但在按照OP要求使用“Mvn Release Plugin”时失败。