升级至Spring Boot 2.7.10后Jacoco插件失效,代码覆盖率为0%
解决Jacoco插件无法解析及Sonar覆盖率为0的问题
一、先修复Jacoco插件无法解析的问题
- 检查Maven镜像配置:确认本地settings.xml中的镜像仓库(如阿里云镜像、官方中央仓库)可正常访问,部分私有镜像可能未同步Jacoco插件资源。
- 清理本地仓库缓存:删除本地Maven仓库中
org/jacoco目录,执行mvn clean install -U强制更新依赖。 - 确认插件配置位置:确保Jacoco插件配置在pom.xml的
<build><plugins>节点下,若放在<pluginManagement>中需额外显式引用。
二、调整Jacoco插件配置以生成覆盖率数据
修改插件配置,确保测试执行时代理正常启动并生成覆盖率文件:
<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.7</version> <executions> <execution> <id>jacoco-agent</id> <goals> <goal>prepare-agent</goal> </goals> <!-- 绑定到test阶段,保证测试运行前启动代理 --> <phase>test</phase> </execution> <execution> <id>jacoco-report</id> <phase>verify</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin>
三、配置Sonar读取Jacoco覆盖率数据
在pom.xml中添加Sonar属性,指定Jacoco报告路径:
<properties> <sonar.jacoco.reportPaths>${project.build.directory}/jacoco.exec</sonar.jacoco.reportPaths> </properties>
四、验证流程
- 执行
mvn clean test,检查target目录下是否生成jacoco.exec文件。 - 执行
mvn verify,确认target/site/jacoco目录生成HTML格式的本地覆盖率报告。 - 执行Sonar扫描命令(如
mvn sonar:sonar),此时Sonar应能正常读取覆盖率数据。
内容的提问来源于stack exchange,提问作者HMT
相关产品推荐
相关产品推荐

