配置JaCoCo Maven插件后仍无法排除生成代码,该如何解决?
解决JaCoCo排除规则不生效导致Coveralls报错的问题
我之前也踩过这个JaCoCo排除规则的坑!你的配置看起来没问题,但核心问题是排除规则放错了阶段——听我给你拆解下:
你的当前配置把<excludes>放在了插件的全局<configuration>里,但prepare-agent这个执行目标只是负责设置JVM参数来收集覆盖率数据,它根本不会处理类的排除逻辑。真正过滤类并生成正确报告的是report目标,所以必须把排除规则移到对应的report执行块中。
修正后的完整配置
把你的jacoco-maven-plugin配置改成这样:
<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>${jacoco.version}</version> <executions> <execution> <id>prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>report</id> <goals> <goal>report</goal> </goals> <configuration> <excludes> <exclude>**/Header*.java</exclude> </excludes> </configuration> </execution> </executions> </plugin>
为什么这样能解决问题?
prepare-agent:仅负责注入JVM参数,让测试过程中收集覆盖率数据,不参与报告生成的过滤逻辑;report:负责根据收集到的数据生成覆盖率报告,这时候配置的<excludes>才会生效,过滤掉所有以Header开头的类。
额外验证步骤
- 先执行本地命令验证报告:
mvn clean test jacoco:report - 打开
target/site/jacoco/index.html,确认Header开头的类已经不在报告里了 - 再执行
coveralls:report,就不会再出现No source found for HeaderMyClass.java的错误了
内容的提问来源于stack exchange,提问作者Shmoe
相关产品推荐
相关产品推荐

