You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在多模块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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 01:57:48