Java Spring项目SonarQube无法生成JaCoCo覆盖率报告显示0%问题求助
问题根因与修复方案
已确认的配置错误点
- JaCoCo版本冲突:properties中定义的
jacoco.version为0.8.7,但dependencies中硬编码jacoco-maven-plugin版本为0.8.6,版本不一致会导致报告生成失败;且jacoco-maven-plugin属于maven插件,不需要在dependencies中声明,仅需在build/plugins节点配置即可。 - 报告路径配置不匹配:
sonar.coverage.jacoco.xmlReportPaths配置的是聚合报告路径jacoco-aggregate/jacoco.xml,但你的jacoco插件仅配置了普通report目标,未配置聚合报告的生成规则,无法生成对应路径的报告文件,和日志中抛出的路径找不到警告完全对应。 - 排除规则语法错误:
sonar.exclusions中**/atlas/base/api/repository/*.java行末尾缺少逗号,会导致后续的启动类排除规则不生效。
具体修复步骤
- 统一版本并清理冗余配置
删除dependencies节点中的jacoco-maven-plugin依赖声明,确保build/plugins下的jacoco插件版本统一使用${jacoco.version}。 - 修正报告路径配置
单模块项目直接删除sonar.coverage.jacoco.xmlReportPaths配置使用默认路径即可,若需显式声明可改为:
<sonar.coverage.jacoco.xmlReportPaths>${project.build.directory}/site/jacoco/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
- 调整构建执行命令
必须按顺序执行测试、报告生成、Sonar扫描,使用命令:mvn clean verify sonar:sonar
禁止仅执行mvn sonar:sonar,否则不会触发单测执行和jacoco报告生成逻辑。
验证方式
构建完成后先检查target/site/jacoco目录下是否存在jacoco.xml文件,文件存在的前提下SonarQube即可正常读取覆盖率数据。
内容的提问来源于stack exchange,提问作者MFEB
相关产品推荐
相关产品推荐

