Maven在jenkins

时间:2016-04-14 11:47:41

标签: java maven jenkins

当我尝试运行Jenkins Maven作业时,我收到以下错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project myProject: Fatal error compiling: invalid target release: 1.8 -> [Help 1]

这表明Maven使用的是Java 1.8,但它应该使用Java 1.7。

我在调试模式下运行Maven并显示正确的版本:

...
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 14:51:28+0100)
Maven home: /var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/maven305
Java version: 1.7.0_71, vendor: Oracle Corporation
Java home: /var/lib/jenkins/tools/hudson.model.JDK/JDK_7u71/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.8.0-44-generic", arch: "amd64", family: "unix"
...

Jenkins服务器使用Java 1.8运行

...
$ java -version
java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)
...
$ javac -version
javac 1.8.0_74
...

我尝试用一​​个空的Maven仓库运行这个工作,并告诉Maven确切使用哪个版本,但没有成功。

我这样称Maven:

mvn clean install -X -DskipTests -Dmaven.repo.local=../testrepo -Djava.version=1.7

我做错了吗?

5 个答案:

答案 0 :(得分:12)

正确的解决方案是将所需的JDK添加到Jenkins全局配置中,然后在项目构建配置下专门选择所需的JDK版本/安装。

首先将所需的JDK复制到构建计算机。然后打开Jenkins配置并滚动到" JDK"部分[詹金斯 - >管理Jenkins - >配置系统]。将所需的JDK添加到Jenkins。下图是配置了两个不同JDK的Jenkins示例。JDK installations under Jenkins

现在在项目配置下[YourProject - >配置],将有一个新选项。您可以选择所需的JDK来构建项目,如图所示: enter image description here

"(默认)"图中的JVM指的是Jenkins运行的JDK。简单的解决方法是将此JDK更改为项目所需的版本(通过更改Jenkins启动脚本或使用JAVA_HOME)。这会奏效。但是,一旦您需要构建两个或更多冲突项目,您将需要配置多个JDK。

通过使用类似的步骤,您可以向Jenkins服务器添加多个maven安装。

答案 1 :(得分:0)

请尝试以下步骤:

1)转到Manage Jenkins - >配置系统

2)在全局属性中添加JAVA_HOME及其路径 - >环境变量

3)在JDK部分中添加JDK和路径

如果没有,请尝试关注这篇文章,因为这里提供了很多解决方案:Maven uses an incorrect Java version when it is executed by Jenkins

答案 2 :(得分:0)

在Jenkins 2.7.3(以及稍后可能)中,菜单导航略有不同:

1)管理Jenkins

2)全局工具配置

3)JDK部分

4)按“JDK安装”按钮

5)JDK选项和路径在那里

答案 3 :(得分:0)

从Jenkins 2.60.1(2017年6月)开始,maven作业需要JDK 1.8或更高版本。 只有Maven作业需要这样做,其余所有作业(例如自由式作业)都可以修复最适合其需求的jdk版本。

请参见LTS Changelog

  

2.60.1是第一个需要Java 8运行的Jenkins LTS版本。如果您使用的是Maven项目类型,请注意它需要   使用能够运行Jenkins的JDK,即JDK 8或更高版本。如果你   在Maven项目中配置较旧的JDK,Jenkins将尝试   找到更新的JDK并自动使用它。

Compatibility Notes

  

在Java 7中使用Maven项目类型

     

使用“ Maven项目”类型配置了作业的用户可能不会   能够将Java 7用于其Maven作业。正确的行为是   保证,因此风险自负。 Maven项目使用Jenkins   远程处理以在Maven可执行文件中建立“拦截器”。   因此,Maven使用Remoting和其他Jenkins核心类,   并且此行为可能会中断更新。

答案 4 :(得分:-1)

我终于找到了问题所在。

我在构建中使用另一个模块,我从nexus服务器下载。有人犯了一个错误并上传了一个版本到nexus,它与版本控制下的版本不同步。 nexus上的版本指定了Java 1.8,但版本控制下的版本有Java 1.7,所以我之前没有注意到它。

感谢大家的回答。