在Jenkins中为Maven构建(Java8)与Sonar扫描(Java11)指定JAVA_HOME
在同一Jenkins任务中分别指定Java版本执行Maven构建与Sonar扫描
前提准备
先在Jenkins全局工具配置中完成Java 8和Java 11的配置:
- 进入Jenkins首页 → 系统管理 → 全局工具配置 → JDK
- 点击「新增JDK」,取消「自动安装」选项,分别配置两个版本:
- 名称:比如
JDK8,填写对应Java 8的JAVA_HOME路径(如/usr/lib/jvm/java-8-openjdk-amd64) - 名称:比如
JDK11,填写对应Java 11的JAVA_HOME路径(如/usr/lib/jvm/java-11-openjdk-amd64)
- 名称:比如
- 保存配置
自由风格项目配置
1. 配置Maven构建(使用Java 8)
- 在任务配置页的「构建」区域,添加「Invoke top-level Maven targets」步骤
- 点击步骤下方的「Advanced」按钮,展开高级选项
- 在「JDK」下拉菜单中选择之前配置的
JDK8,Maven构建会自动使用该版本的Java环境
2. 配置Sonar扫描(使用Java 11)
方式一:使用SonarQube Scanner插件步骤
- 添加「Execute SonarQube Scanner」步骤
- 点击步骤下方的「Advanced」按钮,展开高级选项
- 在「JDK」下拉菜单中选择之前配置的
JDK11,Sonar扫描将使用该版本Java
方式二:命令行执行扫描
如果通过命令行调用Sonar扫描,可在命令前临时指定JAVA_HOME:
export JAVA_HOME=/var/lib/jenkins/tools/hudson.model.JDK/JDK11 && sonar-scanner -Dsonar.projectKey=你的项目Key ...
注:路径需替换为你Jenkins中Java 11实际的安装路径,可从全局工具配置中查看
流水线项目配置
通过tool指令和withEnv块,为不同阶段单独指定Java环境:
pipeline { agent any stages { stage('Maven Build (Java 8)') { steps { // 临时切换到Java 8环境执行Maven构建 withEnv(["JAVA_HOME=${tool 'JDK8'}", "PATH+JAVA=${tool 'JDK8'}/bin"]) { sh 'mvn clean install' } } } stage('Sonar Scan (Java 11)') { steps { // 临时切换到Java 11环境执行Sonar扫描 withEnv(["JAVA_HOME=${tool 'JDK11'}", "PATH+JAVA=${tool 'JDK11'}/bin"]) { sh 'sonar-scanner -Dsonar.projectKey=你的项目Key -Dsonar.host.url=你的Sonar地址 ...' } } } } }
注:tool后的名称需与全局工具配置中JDK的名称完全一致
内容的提问来源于stack exchange,提问作者AniK
相关产品推荐
相关产品推荐

