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

Gradle 4.6配置SonarQube 7.0时插件解析失败求助

排查方向与Jacoco集成建议

针对你在配置SonarQube 7.0 + Gradle 4.6时遇到的SSL证书验证失败问题,结合你已经配置代理的情况,下面是几个需要进一步排查的关键点,同时附上后续集成Jacoco的核心配置:

一、代理相关的SSL证书信任问题

公司代理大概率使用了自签名证书,而你的JVM默认信任库(cacerts)并没有包含这个证书,导致拉取插件时出现PKIX路径构建失败。

  • 解决方式:将代理的根证书导入到JDK的信任库中,执行以下命令(默认信任库密码为changeit):
    keytool -import -alias proxy-root-cert -file /path/to/proxy-cert.crt -keystore $JAVA_HOME/jre/lib/security/cacerts
    
  • 如果你不想修改全局JDK信任库,也可以给Gradle单独指定自定义信任库,在gradle/wrapper/gradle-wrapper.properties中添加:
    systemProp.javax.net.ssl.trustStore=/path/to/your/custom-cacerts
    systemProp.javax.net.ssl.trustStorePassword=your-truststore-password
    

二、完善代理配置细节

你当前的代理配置只设置了地址和端口,还需要确认以下几点:

  • 代理认证:如果公司代理需要用户名密码验证,补充以下配置到gradle-wrapper.properties:
    systemProp.http.proxyUser=your-company-username
    systemProp.http.proxyPassword=your-company-password
    systemProp.https.proxyUser=your-company-username
    systemProp.https.proxyPassword=your-company-password
    
  • 代理地址准确性:确认proxy是可解析的域名或正确的IP地址,有些环境需要使用完整域名(比如proxy.yourcompany.com)而非简写。

三、Gradle插件仓库与插件应用优化

  • 移除重复插件应用:你的build.gradle中同时在plugins块声明了Sonar插件,又单独执行apply plugin: 'org.sonarqube',这会导致冗余,建议删除后者,保持plugins块的声明即可:
    plugins {
        id 'java'
        id 'eclipse'
        id 'org.sonarqube' version '2.6.2'
    }
    
  • 添加备用插件仓库:如果默认的plugins.gradle.org访问不稳定,可以在项目根目录的settings.gradle中添加mavenCentral作为插件仓库备份:
    pluginManagement {
        repositories {
            gradlePluginPortal()
            mavenCentral()
        }
    }
    

四、提前排查SonarQube服务器的SSL问题

当插件拉取成功后,连接SonarQube 7.0服务器时可能也会遇到类似证书问题,提前做好准备:

  • 如果Sonar服务器使用自签名证书,同样需要将其证书导入JVM信任库,或者在Sonar配置中指定信任库:
    sonarqube {
        properties {
            property "sonar.host.url", "https://your-sonar-server-url"
            property "sonar.ssl.truststore", "/path/to/your/cacerts"
            property "sonar.ssl.truststorePassword", "changeit"
        }
    }
    

五、Jacoco与SonarQube集成核心配置

要实现Gradle集成Jacoco代码覆盖率并上传到SonarQube,添加以下配置到build.gradle:

plugins {
    // 保留原有插件,新增jacoco
    id 'jacoco'
}

// 配置Jacoco生成Sonar需要的XML格式报告
jacocoTestReport {
    reports {
        xml.enabled true // 必须开启XML报告,Sonar才能识别
        html.enabled true // 可选,生成本地可读的HTML报告
    }
}

// 关联SonarQube与Jacoco报告
sonarqube {
    properties {
        property "sonar.java.coveragePlugin", "jacoco"
        property "sonar.jacoco.reportPaths", "${buildDir}/reports/jacoco/test/jacocoTestReport.xml"
        // 补充其他必要配置,比如项目key
        property "sonar.projectKey", "your-project-key"
    }
}

// 确保先生成Jacoco报告,再执行Sonar扫描任务
tasks.sonarqube.dependsOn jacocoTestReport

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:01:59