Jacoco无法排除类求助:Maven项目代码覆盖率配置问题
解决Jacoco Maven插件排除指定类的问题
我明白你在使用Jacoco统计代码覆盖率时遇到了无法排除指定类的困扰,别担心,这是个很常见的配置问题,我们只需要在Jacoco插件的配置里添加excludes节点就能搞定。
首先,给你补全并修改现有配置,你可以直接参考调整:
<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.7.5.201505241946</version> <executions> <execution> <id>pre-my-test</id> <phase>pre-integration-test</phase> <goals> <goal>prepare-agent</goal> </goals> <configuration> <append>true</append> <!-- 若想在收集覆盖率数据阶段就忽略这些类,可在此添加excludes --> <!-- <excludes> <exclude>**/不需要统计的类名.class</exclude> </excludes> --> </configuration> </execution> <!-- 建议添加报告生成阶段,在此配置排除规则最直接 --> <execution> <id>jacoco-generate-report</id> <phase>post-integration-test</phase> <goals> <goal>report</goal> </goals> <configuration> <!-- 核心:配置要排除的类 --> <excludes> <!-- 排除单个类:匹配所有包下的TargetClass.class --> <exclude>**/TargetClass.class</exclude> <!-- 排除整个包下的所有类:匹配com/example/utils下的所有.class文件 --> <exclude>**/com/example/utils/**/*.class</exclude> <!-- 排除所有以"Test"结尾的类 --> <exclude>**/*Test.class</exclude> </excludes> </configuration> </execution> </executions> </plugin>
接下来给你解释几个关键细节:
- 配置位置:通常在
report目标的配置里添加excludes就足够了,这是在生成覆盖率报告时过滤掉不需要统计的类;如果希望在收集覆盖率数据阶段就完全忽略这些类,也可以在prepare-agent的配置里添加同样的excludes节点。 - 通配符规则:
**表示任意层级的目录结构*表示任意长度的字符匹配
- 版本兼容性:你使用的Jacoco 0.7.5版本已经完全支持
excludes配置,不需要升级版本。
最后提醒你:配置的路径要对应编译后.class文件的路径,比如你的类全限定名是com.example.config.AppConfig,那么排除路径应该是**/com/example/config/AppConfig.class,或者用**/AppConfig.class匹配所有包下的同名类。
内容的提问来源于stack exchange,提问作者AbtPst
相关产品推荐
相关产品推荐

