You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 16:40:22