Mar*_*ich 6 java-7 jenkins maven-toolchains-plugin
我在 CentOS Linux 版本 7.3.1611 服务器上使用 Jenkins 版本 2.73-1.1。
服务器上有3个不同版本的JDK:
[root @ jenkins java] # ll
total 12
lrwxrwxrwx. 1 root root 16 27 Apr 16.25 default -> / usr / java / latest
drwxr-xr-x. 8 root root 4096 27 Mar 2013 jdk1.6.0_45
drwxr-xr-x. Root root 4096 11 Apr 2015 jdk1.7.0_80
drwxr-xr-x. 9 root root 4096 27 Apr 16.25 jdk1.8.0_131
lrwxrwxrwx. 1 root root 22 27 apr 16.25 latest -> /usr/java/jdk1.8.0_131
Run Code Online (Sandbox Code Playgroud)
如下图所示,Jenkins使用的是jdk1.8.0_131版本,在我的项目中我指定使用JDK7。
当我尝试编译我的项目 ( mvn clean deploy) 时,构建失败,并且我在日志中看到此错误:
[沃达丰] $ /usr/java/jdk1.7.0_80/bin/java -cp /var/lib/jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-agent-1.11.jar:/opt/apache -maven-3.0.4/boot/plexus-classworlds-2.4.jar org.jvnet.hudson.maven3.agent.Maven3Main /opt/apache-maven-3.0.4 /var/cache/jenkins/war/WEB-INF/ lib/remoting-3.10.jar /var/lib/jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-1.11.jar /var/lib/jenkins/plugins/maven-plugin/WEB-INF/ lib/maven3-interceptor-commons-1.11.jar 46349 <===[JENKINS 远程处理能力]===>通道启动错误:===================== =================================================== ========= 错误:无效的项目设置:jenkins/security/MasterToSlaveCallable:不支持的 Major.minor 版本 52.0 错误:[JENKINS-18403][JENKINS-28294] 不支持 JDK 'JAVA7' 运行 Maven 项目。错误:Maven 项目必须使用大于或等于 master 所需的最低版本的 Java 版本启动。错误:使用 Maven JDK 工具链(插件)使用较旧的 JDK 构建您的 Maven 项目。错误:使用从 Java 重试并将编译/测试属性设置为指向 /usr/java/jdk1.7.0_80。错误:================================================== ================================ 在 38129 [Vodafone] $ /usr/java/jdk1.8.0_131 上建立 TCP 套接字/jre/bin/java -cp /var/lib/jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-agent-1.11.jar:/opt/apache-maven-3.0.4/boot/plexus- classworlds-2.4.jar org.jvnet.hudson.maven3.agent.Maven3Main /opt/apache-maven-3.0.4 /var/cache/jenkins/war/WEB-INF/lib/remoting-3.10.jar /var/lib /jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-1.11.jar /var/lib/jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.11.jar 38129 <===[JENKINS 远程处理能力]===>通道已启动
为什么Jenkins不使用jdk 7?
正如Jenkins 主页的Maven 项目插件中记录的那样:
Jenkins >= 2.54 需要 Java 8,因此 Maven 作业必须使用 Java >= 8 启动
幸运的是,最好的解决方法刚刚在您的堆栈跟踪中提到:
...使用Maven JDK 工具链(插件)使用较旧的 JDK 构建您的 Maven 项目...
为了使用 java 7 编译您的项目并使用当前 Jenkins 版本成功启动 Jenkins 作业,我建议您通过两个简单步骤使用工具链插件:
将toolchains.xml文件添加到开发人员系统和 Jenkins 服务器上的.m2目录
<toolchains>
<toolchain>
<type>jdk</type>
<provides>
<version>1.7</version>
<vendor>openjdk</vendor>
</provides>
<configuration>
<jdkHome>/usr/lib/jvm/java-7-openjdk-amd64</jdkHome>
</configuration>
</toolchain>
<toolchain>
<type>jdk</type>
<provides>
<version>1.8</version>
<vendor>openjdk</vendor>
</provides>
<configuration>
<jdkHome>/usr/lib/jvm/java-8-openjdk-amd64</jdkHome>
</configuration>
</toolchain>
[...]
</toolchains>
Run Code Online (Sandbox Code Playgroud)
将工具链插件添加到项目pom文件中
<project>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<goals>
<goal>toolchain</goal>
</goals>
</execution>
</executions>
<configuration>
<toolchains>
<jdk>
<version>1.7</version>
<vendor>openjdk</vendor>
</jdk>
</toolchains>
</configuration>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
最后,将您的 Jenkins 作业配置为使用jdk 8,工具链将负责使用jdk 7编译您的项目。
| 归档时间: |
|
| 查看次数: |
6265 次 |
| 最近记录: |