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

升级至SonarQube 10.4.1(Java11环境),如何配置Azure DevOps流水线?

配置Azure DevOps流水线适配SonarQube 10.4.1与Java 11

针对你的场景,结合SonarQube的要求,只需在流水线的SonarQube准备任务中添加sonar.java.jdkHome配置,指定项目依赖的Java 11 JDK路径即可。推荐使用Azure DevOps的预定义变量来获取路径,避免硬编码带来的兼容性问题。

修改后的流水线YAML代码

- task: MavenAuthenticate@0
  inputs:
    artifactsFeeds: 'MyApp'

- task: Cache@2
  inputs:
    key: 'maven | "$(Agent.OS)" | **/pom.xml'
    restoreKeys: |
      maven | "$(Agent.OS)"
      maven
    path: $(mavenCacheFolder)
  displayName: 缓存Maven本地仓库

- ${{ if eq(parameters.sonarEnable, 'true') }}:
  - ${{ if eq(parameters.sonarCacheEnable, 'true') }}: 
    - task: Cache@2
      inputs:
        key: 'sonar | "$(Agent.OS)" | **/pom.xml'
        restoreKeys: |
          sonar | "$(Agent.OS)"
          sonar
        path: "/home/vsts/.sonar/cache"
      displayName: Sonar缓存
      
- ${{ if eq(parameters.sonarEnable, 'true') }}:
  - task: SonarQubePrepare@6
    inputs:
      SonarQube: ${{ parameters.sonarQubeEndpoint }}
      scannerMode: 'Other'
      extraProperties: |
        sonar.projectKey=${{ parameters.sonarProjectKey }}
        sonar.host.url=$(sonarHostURL)
        sonar.login=${{ parameters.sonarLogin }}
        sonar.coverage.jacoco.xmlReportPaths=${{ parameters.sonarCoverageJacocoXmlReportPaths }}
        sonar.exclusions= ${{ parameters.sonarExclusions }}
        # 添加Java 11 JDK路径配置
        sonar.java.jdkHome=$(JAVA_HOME_11_X64)

- task: Maven@3
  inputs:
    mavenPomFile: 'pom.xml'
    goals: ${{ parameters.mavenGoal }}
    publishJUnitResults: true
    testResultsFiles: '**/surefire-reports/TEST-*.xml'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.11'
    mavenVersionOption: 'Default'
    mavenOptions: '-Xmx3072m $(mavenOpts)'
    mavenAuthenticateFeed: true
    effectivePomSkip: false
    sonarQubeRunAnalysis: ${{ parameters.sonarEnable }}
    sqMavenPluginVersionChoice: 'latest'
    checkStyleRunAnalysis: true
    pmdRunAnalysis: true

- ${{ if eq(parameters.sonarEnable, 'true') }}:
  - task: SonarQubePublish@6
    inputs:
      pollingTimeoutSec: '600'
  - task: sonar-buildbreaker@8
    inputs:
      SonarQube: ${{ parameters.sonarQubeEndpoint }}

关键说明

  • 添加的sonar.java.jdkHome=$(JAVA_HOME_11_X64)配置,会让SonarQube分析器明确使用Java 11的类库进行代码分析,确保结果的一致性,避免原生JDK类相关的分析问题。
  • 使用Azure DevOps预定义变量$(JAVA_HOME_11_X64)可以自动适配不同操作系统的托管代理,无需手动指定固定路径(比如Linux的/usr/lib/jvm/jdk11.0.22/)。

内容的提问来源于stack exchange,提问作者brucewayne

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:12:17