Sonar覆盖率为0%且未生成jacoco.xml问题求助
问题:升级Spring Boot、Sonar及Jacoco后代码覆盖率变为0%
升级前Sonar代码覆盖率可达70%,但升级相关版本后覆盖率直接降至0%。目前测试用例已编写完成,Surefire报告可正常生成,jacoco.exec文件也已生成,但始终无法生成jacoco.xml文件。
POM配置如下:
<properties> <java.version>11</java.version> <spring-cloud.version>3.1.5</spring-cloud.version> <jacoco.version>0.8.6</jacoco.version> <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin> <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis> <sonar.version>3.4.0.905</sonar.version> <swagger.version>3.0.0</swagger.version> <sonar.host.url>http://localhost:9000</sonar.host.url> <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath> </properties> <plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>${sonar.version}</version> </plugin> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>${jacoco.version}</version> <executions> <execution> <id>jacoco-initialize</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>jacoco-site</id> <phase>package</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin>
相关情况说明:
- Sonar平台显示代码覆盖率为0%
- 项目target目录下存在jacoco.exec文件
- Surefire测试报告生成正常,测试用例执行无异常
- 项目目录中未找到jacoco.xml文件
解决建议
1. 调整Jacoco插件配置生成XML报告
当前Jacoco插件仅配置report目标,默认只生成HTML报告,不会产出XML格式。需修改配置指定生成XML报告:
<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>${jacoco.version}</version> <executions> <execution> <id>jacoco-initialize</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>jacoco-report</id> <phase>test</phase> <goals> <goal>report</goal> </goals> <configuration> <formats> <format>XML</format> <format>HTML</format> </formats> </configuration> </execution> </executions> </plugin>
2. 修正Sonar的Jacoco报告路径配置
新版本Sonar已弃用sonar.jacoco.reportPath,改用复数形式的sonar.jacoco.reportPaths,同时确保路径指向生成的jacoco.xml文件:
<sonar.jacoco.reportPaths>${project.build.directory}/jacoco.xml</sonar.jacoco.reportPaths>
3. 规范Maven执行顺序
必须确保先执行测试和Jacoco报告生成,再运行Sonar扫描,正确命令为:
mvn clean test jacoco:report sonar:sonar
4. 检查版本兼容性
确认Spring Boot、Sonar Scanner、Jacoco三者版本匹配:
- Jacoco 0.8.6适配Java 11无问题
- Sonar Maven Plugin 3.4.0.905建议搭配SonarQube服务器7.9及以上版本,若服务器版本过低可能引发兼容问题
内容的提问来源于stack exchange,提问作者HMT
相关产品推荐
相关产品推荐

