寻找一种在不具有从属的同一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。
答案 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.