升级Jenkins至2.361.3后Maven构建失败,求Java8兼容解决方案
可行的Workaround方案
方案1:分离Maven运行JDK与项目编译JDK
不用修改项目类型,仅调整任务配置即可解决:
- 先在Jenkins全局工具配置中,新增Java11的安装(可选择自动下载,或指定服务器上已有的Java11路径)
- 打开每个Maven任务的配置页,在「JDK」选项中选择刚配置好的Java11
- 如果项目pom.xml未指定编译版本,就在Maven的「Goals and options」里添加参数:
-Dmaven.compiler.source=1.8 -Dmaven.compiler.target=1.8
这样Maven本身用Java11运行(满足Jenkins插件的版本要求),但编译出的代码仍兼容Java8,完全不影响项目的运行环境。
方案2:降级Maven Integration插件
如果不想逐个修改任务配置,可以降级Jenkins的Maven插件至支持Java8的版本:
- 进入Jenkins的「插件管理」页面,找到「Maven Integration」插件
- 点击插件详情中的「降级」按钮,选择最后一个标注支持Java8的版本(比如3.9.0,具体以插件版本说明的兼容信息为准)
- 降级完成后重启Jenkins,Maven任务即可继续用Java8的JDK运行
注意:降级插件会丢失新版插件的功能,建议先在测试环境验证核心构建流程正常后,再推广到生产环境。
方案3:批量修改Maven任务配置
针对100+任务的批量场景,可通过Jenkins脚本控制台批量操作:
- 进入Jenkins的「脚本控制台」(路径:Manage Jenkins -> Script Console)
- 执行以下Groovy脚本,批量给所有Maven任务指定已配置好的「Java11」JDK:
import jenkins.model.Jenkins import hudson.tasks.MavenModuleSet Jenkins.instance.getAllItems(MavenModuleSet.class).each { mavenJob -> mavenJob.setJdk(Jenkins.instance.getJDK("Java11")) mavenJob.save() }
后续可根据需求,补充批量添加Maven编译参数的脚本,或确保项目pom.xml中已配置maven-compiler-plugin的source和target为1.8。
内容的提问来源于stack exchange,提问作者Ramesh Thiyagarajan
相关产品推荐
相关产品推荐

