Jacoco在pom.xml配置<exclude>无法排除指定包和类问题求助
Jacoco排除规则不生效解决方案
核心原因
当前配置存在两个核心问题导致排除不生效:
- 全局
<configuration>下的excludes规则不会自动被<execution>中绑定的report、instrument目标继承,需要显式在执行目标的配置中声明,或调整配置位置 - 若Jenkins使用自带的Jacoco插件二次生成报告,未同步配置排除规则也会导致统计未过滤
调整后的完整配置
<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>${jacoco.version}</version> <executions> <execution> <id>instrument</id> <phase>process-classes</phase> <goals> <goal>instrument</goal> </goals> <!-- instrument阶段就排除目标类,避免对废弃类插桩 --> <configuration> <excludes> <exclude>com/dir1/dir2/dir3/dir4/**/*[Xx][Yy][Zz]*.*</exclude> <exclude>com/dir1/dir2/dir3/dir4/**/*xyz*/**</exclude> <exclude>com/dir1/dir2/dir3/dir4/**/*[Aa][Bb][Cc]*.*</exclude> <exclude>com/dir1/dir2/dir3/dir4/**/*abc*/**</exclude> </excludes> </configuration> </execution> <execution> <id>restore</id> <phase>prepare-package</phase> <goals> <goal>restore-instrumented-classes</goal> <goal>report</goal> </goals> <!-- report阶段显式配置排除,保证生成报告时过滤目标类 --> <configuration> <excludes> <exclude>com/dir1/dir2/dir3/dir4/**/*[Xx][Yy][Zz]*.*</exclude> <exclude>com/dir1/dir2/dir3/dir4/**/*xyz*/**</exclude> <exclude>com/dir1/dir2/dir3/dir4/**/*[Aa][Bb][Cc]*.*</exclude> <exclude>com/dir1/dir2/dir3/dir4/**/*abc*/**</exclude> </excludes> </configuration> </execution> <execution> <id>pre-unit-test</id> <phase>none</phase> </execution> <execution> <id>post-unit-test</id> <phase>none</phase> </execution> <execution> <id>pre-integration-test</id> <phase>none</phase> </execution> <execution> <id>post-integration-test</id> <phase>none</phase> </execution> </executions> </plugin>
额外排查步骤
- 本地先执行
mvn clean prepare-package,查看target/site/jacoco路径下生成的报告,确认目标类已经被排除,先保证本地配置生效 - 检查Jenkins job配置:若Job中启用了「JaCoCo代码覆盖率报告」的独立采集配置,需要在该配置的「排除类路径」项中填入和pom一致的排除规则,或者配置Jenkins直接读取Maven生成的报告文件,避免二次统计
- 可根据实际需要简化规则:
[Xx][Yy][Zz]的通配写法可以同时匹配大小写的XYZ,不需要分别写大小写两条规则
内容的提问来源于stack exchange,提问作者Atihska
相关产品推荐
相关产品推荐

