Maven项目中如何将generated-sources排除在Jacoco覆盖率报告之外?
解决Jacoco无法排除generated-sources目录类的问题
核心问题:Jacoco的
exclusionPattern是针对编译后的类文件路径,而非源码目录路径。你配置的**/target/generated-sources/**指向的是源码目录,但生成的代码编译后通常会放在target/classes或target/generated-classes目录下,所以这个规则无法匹配到实际参与覆盖率统计的类文件。调整方案:
- 先确认生成代码的编译输出路径:查看项目target目录,找到generated-sources里的代码编译后所在的具体位置,比如
target/classes/com/yourproject/generated或者target/generated-classes。 - 修改排除规则,匹配编译后的类路径:
示例配置:post { always { junit allowEmptyResults: true, testResults: '**/target/failsafe-reports/*.xml' step( [ $class: 'JacocoPublisher', exclusionPattern: '**/target/classes/**/generated/**,**/target/generated-classes/**,**/tomcat/**'] ) } } - 如果生成的类都属于特定包(比如
com.example.generated),也可以直接用包路径匹配:exclusionPattern: 'com/example/generated/**,**/tomcat/**'
- 先确认生成代码的编译输出路径:查看项目target目录,找到generated-sources里的代码编译后所在的具体位置,比如
验证方法:执行构建后,查看Jacoco报告的类列表,确认生成的类是否已被排除;也可以在Jenkins控制台输出中查找Jacoco相关的日志,检查排除规则是否匹配到了目标类。
内容的提问来源于stack exchange,提问作者Ankit Singh
相关产品推荐
相关产品推荐

