如何在多模块Spring Boot项目中通过Gradle排除JaCoCo报告文件
多模块Spring Boot项目中JaCoCo排除文件的有效配置方案
针对你使用Gradle 8.1.1、Spring Boot 3.1.2的多模块项目,之前的JaCoCo排除配置未生效,可通过以下调整解决:
1. 合并并修正子项目的jacocoTestReport配置
你代码中重复定义了jacocoTestReport块,会导致配置覆盖,同时路径匹配规则不够精准。将两个块合并为以下内容:
jacocoTestReport { dependsOn test reports { xml.required = false csv.required = false html.required = true } afterEvaluate { classDirectories.setFrom( files(classDirectories.files.collect { fileTree(dir: it, exclude: [ "**/config/**", // 精准匹配config包及其子包下的所有类 "**/Config*.class" // 可选:匹配所有以Config开头的类文件 ]) }) ) } }
2. 启用测试任务的JaCoCo排除(可选)
如果需要在测试执行阶段就跳过收集指定类的覆盖率数据,而非仅在报告中隐藏,取消test任务中jacoco配置的注释,并修正路径:
tasks.named('test') { useJUnitPlatform() jacoco { excludes = [ "**/config/**" ] } }
3. 配置根项目的聚合报告排除(因使用jacoco-report-aggregation插件)
由于你启用了聚合报告插件,子项目的排除配置不会自动应用到根级的聚合报告,需在根项目的build.gradle中添加:
tasks.named('jacocoRootReport') { afterEvaluate { classDirectories.setFrom( files(classDirectories.files.collect { fileTree(dir: it, exclude: [ "**/config/**" ]) }) ) } }
验证配置
执行对应任务生成报告后,检查HTML报告中是否已排除目标类:
- 子项目报告:运行
./gradlew :[子项目名]:jacocoTestReport - 根聚合报告:运行
./gradlew jacocoRootReport
内容的提问来源于stack exchange,提问作者Neha P
相关产品推荐
相关产品推荐

