2013-10-17 67 views
2

我正在運行Jenkins版本。 1.532。我創建了一個maven作業,並嘗試將其配置爲使用配置爲從oracle下載/安裝jdk5的jenkins JDK自動安裝程序來運行java 5。但是當我運行的版本,我得到:-Dmaven.compiler.executable = ...在jenkins上忽略jdk5/bin/javac

ERROR: [JENKINS-18403] JDK 5 not supported to run Maven; retrying with slave Java and setting compile/test properties to point to /var/jenkins/tools/hudson.model.JDK/jdk5 
maven31-agent.jar already up to date 
maven31-interceptor.jar already up to date 
maven3-interceptor-commons.jar already up to date 
[my-project] $ /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java -cp /var/jenkins/maven31-agent.jar:/var/jenkins/tools/hudson.tasks.Maven_MavenInstallation/maven/boot/plexus-classworlds-2.4.2.jar:/var/jenkins/tools/hudson.tasks.Maven_MavenInstallation/maven/conf/logging jenkins.maven3.agent.Maven31Main 

它似乎回落到建設與jdk7(默認)。然後,我嘗試將以下內容添加到構建/目標和選項部分:

mvn clean install -Dmaven.compiler.executable=/var/lib/jenkins/tools/hudson.model.JDK/jdk5/bin/javac 

但它沒有任何效果。是否不可能使用-Dmaven.compiler.executable選項強制JDK版本?

編輯: 我現在已經切換到詹金斯自由泳項目類型和使用maven-實施者 - 插件構建失敗,如果JDK =建設項目時,使用1.5!在這裏看到最後一段:

https://blogs.oracle.com/darcy/entry/how_to_cross_compile_for

,並注意這裏:

http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html

+0

輸出使用maven 2.2.1嘗試 –

+0

你能解釋一下爲什麼你不能使用JDK7但源+輸出設置爲Java 5?這不是最簡單的選擇嗎? – eis

+0

你的意思是http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html?從筆記我明白,你仍然可以遇到這種方法的運行時錯誤。所以看起來,100%確定的唯一方法是通過構建一個不高於你想要兼容的jdk版本。 – u123

回答

2

http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#executable-Dmaven.compiler.executable將覆蓋編譯器可執行文件只對Maven編譯器插件,而不是針對整個詹金斯工作。如果您只需要使用JAVA5編譯源代碼 - 設置此屬性應足以強制Maven編譯器使用JAVA5。即使Jenkins的工作將使用JDK 1.6或更高版本來運行Maven啓動器。

而且,當然,您需要在Jenkins作業設置中設置JDK 1.6或更高版本。由於Jenkins無法使用JAVA5運行Maven,因此您不應該使用它。

+0

我現在已經更改爲freeStyle項目,使用Dmaven.compiler.executable選項+ maven-enforcer插件來失敗構建,如果項目正在構建與jdk版本> 1.5 – u123

1

我有一個類似的情況,我幫你。

我的行家與JDK 1.7運行,但我想建一個項目,JDK 8

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.1</version> 
    <configuration> 
     <source>1.8</source> 
     <target>1.8</target> 
    </configuration> 
</plugin> 

,如果我會運行 mvn clean install 我會得到這樣的錯誤:

致命錯誤編譯:無效目標版本:1.8

當我設置JAVA_HOME到JDK 8,它會像魅力一樣工作,但我不想那麼做。

maven編譯器有選項,就像你提到的executeable然而這在我的情況下不起作用,它仍然會失敗並顯示相同的錯誤信息。

我想出了下面的命令

mvn clean install -Dmaven.compiler.executable=/usr/lib/jvm/jdk1.8.0/bin/javac -Dmaven.compiler.fork=true 

隨着更多的信息,我的附加mvn -v

Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 14:51:28+0100) 
Maven home: /opt/apache-maven-3.x 
Java version: 1.7.0_45, vendor: Oracle Corporation 
Java home: /usr/lib/jvm/jdk1.7.0_45/jre 
Default locale: de_DE, platform encoding: UTF-8 
OS name: "linux", version: "3.11.0-20-generic", arch: "amd64", family: "unix"