2

我正在运行 Jenkins 版本。1.532。我创建了一个 maven 作业,并尝试使用配置为从 oracle 下载/安装 jdk5 的 jenkins JDK 自动安装程序将其配置为运行 java 5。但是当我运行构建时,我得到:

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 版本?

编辑: 我现在已经切换到 jenkins 自由式项目类型,如果在构建项目时使用 jdk != 1.5,则使用 maven-enforcer-plugin 使构建失败。请参阅此处的最后一段:

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

4

2 回答 2

2

根据http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#executable-Dmaven.compiler.executable将覆盖仅为 Maven 编译器插件而不是整个 Jenkins 工作的编译器可执行文件。如果您只需要使用 JAVA5 编译源代码 - 设置此属性应该足以强制 Maven 编译器使用 JAVA5。即使 Jenkins 作业将使用 JDK 1.6 或更高版本来运行 Maven 启动器。

当然,您需要在 Jenkins 作业设置中设置 JDK 1.6 或更高版本。由于 Jenkins 无法使用 JAVA5 运行 Maven,因此您不应该使用它。

于 2013-10-21T14:58:14.453 回答
2

我有一个类似的案例,我可以帮助你。

我的 Maven 使用 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"
于 2014-06-05T08:33:36.487 回答