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

如何排除JaCoCo覆盖率报告中src-gen目录下同名包的类?

问题原因

你当前的JaCoCo配置无效,核心原因是:JaCoCo的excludes参数匹配的是编译后的.class文件路径,而非源码目录路径。

因为你的src/main/java和src/main/src-gen下的类编译后都会输出到同一个target/classes/com/chintan/project/目录中,源码目录的层级信息在编译后已经丢失,所以用**/src-gen/**/*这种源码路径规则根本匹配不到任何编译后的类,自然无法排除。

解决方法

针对你的场景,推荐以下几种可行方案:

方案1:按生成类的命名规则排除(最简便)

如果src-gen下的生成类有统一命名规律(比如后缀是Generated、前缀是Auto等),直接匹配类文件名:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.11</version>
    <executions>
        <execution>
            <id>jacoco-prepare-agent</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
            <!-- 如果不想给生成类插桩,这里也加排除 -->
            <configuration>
                <excludes>
                    <exclude>**/*Generated.class</exclude>
                </excludes>
            </configuration>
        </execution>
        <execution>
            <id>jacoco-report</id>
            <phase>test</phase>
            <goals>
                <goal>report</goal>
            </goals>
            <configuration>
                <excludes>
                    <exclude>**/*Generated.class</exclude>
                </excludes>
            </configuration>
        </execution>
    </executions>
</plugin>

方案2:通过注解排除(精准)

如果生成类带有特定注解(比如javax.annotation.Generated或自定义注解),可以直接通过注解类排除:

<excludes>
    <exclude>@javax.annotation.Generated</exclude>
</excludes>

如果生成工具默认没加注解,你可以在代码生成配置里添加注解,或者通过编译插件(比如maven-compiler-plugin)给src-gen下的类批量添加注解。

方案3:反向包含指定类(兜底方案)

如果上述两种方法都无法实现,只能反向控制——明确指定只包含src/main/java下的类。比如你可以通过类名前缀/后缀区分,或者手动列出需要包含的类(适合类数量少的场景):

<configuration>
    <includes>
        <!-- 假设非生成类没有特定前缀,生成类以G开头,这里只包含非G开头的类 -->
        <include>**/com/chintan/project/[!G]*.class</include>
    </includes>
</configuration>

内容的提问来源于stack exchange,提问作者Chintan Jagad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:21:06