我们有一个Jenkins作业被配置为使用JDK7。在检查日志时,我注意到以下错误:
ERROR: Invalid project setup: jenkins/security/MasterToSlaveCallable : Unsupported major.minor version 52.0
ERROR: [JENKINS-18403][JENKINS-28294] JDK 'JDK 1.7.0_45' 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_45/.
在Google上搜索了一下之后,似乎Job和Jenkins本身之间有一些交互。由于Jenkins是用JDK8启动的,Job是用JDK7启动的,因此似乎会产生这个错误。构建是可以的,因为Jenkins随后继续用JDK8构建。但实际上我们希望用1.7构建这个。
所以问题是:如果我们使用JDK8启动Jenkins,我如何才能让作业使用JDK7编译而不出现此错误?
4条答案
按热度按时间smtd7mpg1#
这显然是Jenkins插件Maven Integration的技术限制。
由于Java序列化类在Jenkins master和Maven Jobs之间交换,因此要求用于启动Maven的JVM上级或等于Jenkins Master构建时所针对的Java版本。
我怀疑您的Jenkins版本太新,需要JDK版本〉= 8。
由于所需的版本是7,您可以使用Java7或8 -甚至9。因此,即使Jenkins是从Java8开始的,您的构建也可以使用Java7成功。
您可以降级Jenkins安装,或者将所有构建版本迁移到Java8。
干杯
rkttyhzu2#
要在 Jenkins〉= 2.54 上使用Java 1.7,您需要在 * 自由样式项目 * 中转换 *Maven项目 *。在 * 自由样式项目 * 中,您可以指定 JDK 版本。这是因为从版本 2.54 开始,Jenkins 已升级为使用 Java 8。
来自Jenkinsrelease notes:
在Java 7中使用Maven项目类型
作业配置为“Maven项目”类型的用户可能无法将Java 7用于其Maven作业。无法保证正确的行为,因此继续操作的风险由您自行承担。Maven项目使用Jenkins Remoting在Maven可执行文件中建立“拦截器”。因此,Maven使用Remoting和其他Jenkins核心类,此行为可能会中断更新
您还可以查看here如何创建 * 自由样式项目 *
z0qdvdin3#
您可能知道Jenkins〉= 2.54需要Java〉= 8,因此必须使用Java〉= 8启动Maven作业
除此之外,错误消息还将指导您:
使用Maven JDK工具链(插件)构建您的Maven项目...
使用该插件可能会帮助您使用Java 8运行jenkins作业,并使用Java 7编译项目文件。
几年前我就用这种方法解决了我的问题。
您可以在this Answer上查看更多详细信息。
gopyfrb34#
这种交互是基于Jenkins将尝试被告知完成单个模块以及是否有工件正在创建和其他一些东西。这是由Jenkins中的EventSpy实现处理的。这可能会导致类似这样的问题。