Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven在jenkins上使用错误的JDK构建_Java_Maven_Jenkins - Fatal编程技术网

Java Maven在jenkins上使用错误的JDK构建

Java Maven在jenkins上使用错误的JDK构建,java,maven,jenkins,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使用Java1.8,但它应该

当我尝试运行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使用Java1.8,但它应该使用Java1.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服务器使用Java1.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 repo运行这个作业,并告诉Maven要使用哪个版本,但没有成功

我这样称呼Maven:

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

我做错什么了吗?

尝试以下步骤:

1) 转到管理Jenkins->配置系统

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

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


如果没有,请尝试下面这篇文章,因为这里提供了很多解决方案:

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

从将所需的JDK复制到构建机器开始。然后打开Jenkins配置并滚动到“JDK”部分[Jenkins->Manage Jenkins->Configure System]。向Jenkins添加所需的JDK。下图是使用两个不同JDK配置的Jenkins示例

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

图中的“默认”JVM指Jenkins运行的JDK。简单的修复方法是将此JDK更改为项目所需的版本(通过更改Jenkins start脚本或使用JAVA_HOME)。这会奏效的。但是,一旦您需要构建两个或多个冲突的项目,您无论如何都需要配置多个JDK


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

我终于发现了问题所在

我在构建中使用另一个模块,从nexus服务器下载。有人出错,将一个版本上载到nexus,该版本与版本控制下的版本不同步。nexus上的版本指定了Java1.8,但版本控制下的版本有Java1.7,所以我之前没有注意到

感谢大家的精彩回答。

在Jenkins 2.7.3(以及以后的版本)中,菜单导航略有不同:

1) 管理詹金斯

2) 全局工具配置

3) JDK部分

4) 按“JDK安装”按钮

5) JDK选项和路径在Jenkins 2.60.1(2017年6月)LTS中有,maven作业需要JDK 1.8或更高版本。 只有maven作业需要这一点,其他所有作业(例如freestyle作业)都可以修复最适合其需要的jdk版本

见:

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

在Java7中使用Maven项目类型

具有配置为“Maven project”类型的作业的用户可能无法访问 能够在Maven工作中使用Java7。正确的行为是不正确的 保证,因此请自行承担风险。Maven项目使用Jenkins 远程处理以在Maven可执行文件中建立“拦截器”。 因此,Maven使用远程处理和其他Jenkins核心类, 这种行为可能会破坏更新


您是否已尝试在POM文件中为编译器插件显式指定Java 1.7?@CptBartender否,我将尝试。@CptBartender仍然存在相同的错误。我已经尝试了其他问题中提到的解决方案,但没有任何效果。此外,我无法更改全局变量,因为Jenkins服务器也被其他需要其他Java版本的项目使用。不要忘记将源/目标版本值添加到pom.xml中,在本例中为:Project=Job