Jenkins 可以为同一个 Maven 作业支持 2 个 Java 版本吗?

Posted

技术标签:

【中文标题】Jenkins 可以为同一个 Maven 作业支持 2 个 Java 版本吗?【英文标题】:Can Jenkins support 2 Java versions for same Maven job? 【发布时间】:2021-04-08 00:15:39 【问题描述】:

我们正在尝试升级 Java 并已修改 pom.xml 以在源和目标中使用新版本进行构建。 Jenkins 作业目前因错误而失败:

致命错误编译:无效的目标版本:11。

我们正在并行开发多个发布分支。他们中的大多数仍在使用旧 Java,应该使用旧版本构建。仅对于一个发布分支,我们需要新的 Java 版本。可以这样配置Jenkins吗?

我的理解是Jenkins JAVA HOME需要更新以匹配目标版本。

【问题讨论】:

请阅读:Can I ask only one question per post? 我建议您查看--release compiler option for javac。通过release-property of the maven-compiler-plugin 控制这一点似乎很有希望。 Re 1.:“Jenkins Java HOME”是什么意思?您的操作系统中有基于 Java 的工具考虑的 JAVA_HOME 环境变量。 流水线语法提供了一种方法来选择你想要的特定运行的 JDK,这可以参数化。 【参考方案1】:

管理 Jenkins全局工具配置JDK 安装...添加 JDK

ConfigureGeneralJDK本项目使用的JDK

【讨论】:

以上是关于Jenkins 可以为同一个 Maven 作业支持 2 个 Java 版本吗?的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 JENKINS 中运行作业时,maven 中的“Peer Not Authenticated”

Maven 更新版本目标在 Jenkins 中构建旧版本

是否有任何 Maven 命令可以在 Jenkins shell 上运行来分析 SonarQube 中的打字稿代码?

当 jenkins 作业作为“执行 Maven 发布”运行时,如何在 shell 步骤中获取参数 MVN_RELEASE_VERSION 的值?

带有集成测试的 Spring Boot 应用程序的 Jenkins 作业

阻止 Jenkins 将工件安装到本地 Maven 存储库