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

如何在JaCoCo、EclEmma中排除代码包?配置不生效求助

解决JaCoCo/EclEmma配置不生效的问题

我来帮你梳理下可能的问题点和解决方向,你遇到的是JaCoCo与EclEmma配置不匹配导致过滤规则失效的典型情况,咱们一步步排查:

1. 检查Maven配置的层级与路径格式

很多时候配置不生效是因为<includes>/<excludes>放错了位置,或者路径格式不对:

  • 首先,这些过滤规则必须放在JaCoCo插件的<configuration>节点下,而且要对应到report执行阶段(因为EclEmma会参考Maven生成的覆盖率报告规则)
  • 路径要使用/分隔包名,并且用**匹配递归子包(你原来的*只能匹配当前包下的类,子包不会被包含)
  • 另外你配置里同时包含又排除了com.cfgh.repository.*,这是冲突的,得明确到底要包含还是排除

给你一个正确的配置示例:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.10</version> <!-- 建议使用稳定版本 -->
    <executions>
        <execution>
            <id>prepare-agent</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>report</id>
            <goals>
                <goal>report</goal>
            </goals>
            <configuration>
                <!-- 报告阶段的过滤规则,EclEmma会参考这个配置 -->
                <includes>
                    <include>com/cfgh/controller/**</include>
                    <include>com/cfgh/service/**</include>
                    <!-- 如果你想包含repository,就去掉下面exclude里的对应项;否则删掉这行 -->
                    <!-- <include>com/cfgh/repository/**</include> -->
                </includes>
                <excludes>
                    <exclude>com/cfgh/config/**</exclude>
                    <exclude>com/cfgh/model/dto/**</exclude>
                    <exclude>com/cfgh/model/entity/**</exclude>
                    <exclude>com/cfgh/repository/**</exclude>
                    <exclude>com/cfgh/exception/handler/**</exclude>
                </excludes>
            </configuration>
        </execution>
    </executions>
</plugin>

2. 检查EclEmma的本地配置是否覆盖了Maven规则

EclEmma在Eclipse中有独立的设置,可能会忽略Maven的配置:

  • 打开Eclipse的Window > Preferences > Java > Code Coverage,查看是否有自定义的全局过滤规则
  • 右键你的项目,选择Coverage As > Coverage Configurations,找到对应的JUnit配置,切换到Coverage标签:
    • 确认是否勾选了“Use Maven build configuration”(不同版本选项 wording 可能略有不同,找关联Maven的选项)
    • 如果有手动添加的includes/excludes,要么删除让它继承Maven配置,要么手动同步你的规则

3. 清理缓存并重新构建

旧的编译文件或JaCoCo缓存可能导致配置不生效:

  • 先执行Maven命令:mvn clean jacoco:report,生成新的覆盖率报告,查看target/site/jacoco下的报告是否已经正确过滤了类
  • 在Eclipse中执行Project > Clean,然后重新运行JUnit的Coverage,确保使用的是最新的构建结果

4. 确认版本兼容性

如果你的EclEmma版本较旧,可能和新版本的JaCoCo插件不兼容:

  • 可以查看EclEmma的官方说明,匹配对应的JaCoCo插件版本(比如EclEmma 3.1.x对应JaCoCo 0.8.9左右)
  • 尝试调整JaCoCo插件的版本,再重新测试

内容的提问来源于stack exchange,提问作者Ruchita J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:59:00