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
相关产品推荐
相关产品推荐

