2017-09-18 323 views
1

我現在用的是詹金斯版本2.73-1.1上一個CentOS Linux的發佈1611年3月7日服務器。JENKINS:錯誤,當我嘗試使用舊的JDK特定Maven項目

有服務器上的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 

如下面的圖片所示,詹金斯是使用jdk1.8.0_131版本,並在項目中,我指定使用JDK7。

Jenkins setup Image 1

Jenkins setup Image 2

當我嘗試編譯我的項目(mvn clean deploy),生成失敗,我看到這個錯誤日誌:

[Vodafone] $ /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 REMOTING CAPACITY]===>channel started ERROR: ================================================================================ ERROR: Invalid project setup: jenkins/security/MasterToSlaveCallable : Unsupported major.minor version 52.0 ERROR: [JENKINS-18403][JENKINS-28294] JDK 'JAVA7' not supported to run Maven projects. ERROR: Maven projects have to be launched with a Java version greater or equal to the minimum version required by the master. ERROR: Use the Maven JDK Toolchains (plugin) to build your maven project with an older JDK. ERROR: Retrying with slave Java and setting compile/test properties to point to /usr/java/jdk1.7.0_80. ERROR: ================================================================================ Established TCP socket on 38129 [Vodafone] $ /usr/java/jdk1.8.0_131/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 REMOTING CAPACITY]===>channel started

爲什麼詹金斯不使用JDK 7?

回答

0

由於它是記錄在詹金斯的maven project plugin主頁上:

Jenkins >= 2.54 requires Java 8 thus Maven jobs must be launched with Java >= 8

幸運的是,最好的解決方法是在你的堆棧跟蹤剛纔提到:

... Use the Maven JDK Toolchains (plugin) to build your maven project with an older JDK...

爲了編譯使用Java 7項目並啓動使用當前版本詹金斯成功詹金斯的工作,我建議你用2個簡單的步驟使用this plugin

  • 添加toolchains.xml文件到您的.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> 
    
  • 添加工具鏈插件到項目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> 
    

最後配置您的詹金斯作業時使用JDK 8,工具鏈會照顧編譯項目與JDK 7

相關問題