使用不同的JDK进行不同的Jenkins构建,没有从属

时间:2019-01-04 19:46:46

标签: java jenkins java-11

寻找一种在不具有从属的同一Jenkins服务器上构建Java 8和Java 11的项目的方法。我将JDK添加到全局工具(Java 11是tarball,无需安装程序),并在项目配置中选择了JDK。构建时,它会按预期将JDK精提取到Jenkins工具目录中。

问题是未设置JAVA_HOME,因此Maven构建失败。

我不想全局设置JAVA_HOME,因为它需要根据用于构建每个项目的JDK进行更改。我也不想自己设置项目,因为他们不在乎JDK的安装位置。

有什么方法可以根据所选的JDK设置JAVA_HOME?

Jenkins期望JDK完全安装(添加到系统路径中)还是将其提取到足够?我认为必须安装到系统路径将意味着我们将被要求使用奴隶。

我们正在使用RHEL x64 v7.6。

3 个答案:

答案 0 :(得分:0)

您是否使用jenkinsfile或声明性管道?如果是这样,则只需添加JAVA_HOME

示例:

node('master') {
    env.JAVA_HOME="${tool 'jdk-8u45'}"
    env.PATH="${env.JAVA_HOME}/bin:${env.PATH}"
    sh 'java -version'
}

查看此链接:https://support.cloudbees.com/hc/en-us/articles/204421664-Select-which-Java-JDK-to-use-in-Pipeline

答案 1 :(得分:0)

问题是顶级目录Java tarball是“ jdk-11.0.1 + 13”。我需要将其添加到全局工具配置插件上的工具“提取的存档的子目录”字段中。完成此操作后,Jenkins将PATH和JAVA_HOME设置为正确的路径。

答案 2 :(得分:0)

添加用户@ dalmo-santos所说的内容

where (dc.year = 2017 and dc.month >= 3) or (dc.year > 2017 and dc.year < 2020) or (dc.year = 202 and dc.month <= 3) 必须在Jenkins中预先配置

tool

因此配置应为

Manage Jenkins → Global Tool Configuration.