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

JaCoCo多项目HTML覆盖率报告不显示源文件的Ant批量配置问题

方案1:通过插件列表文件动态生成配置

这个方案完全匹配你提到的「读文件+遍历生成fileset」的需求,需要依赖Ant扩展包ant-contrib:

  1. 先把所有需要纳入统计的插件名写入jacoco-plugins.list,放在build.xml同目录,每行一个插件ID:
com.gandu.da.util.test
com.gandu.da.util.manager.test
com.gandu.da.util.alltests
  1. 引入ant-contrib,然后预定义合并后的类文件、源文件集合:
<!-- 引入ant-contrib扩展,需确保ant-contrib.jar放在Ant的lib目录下 -->
<taskdef resource="net/sf/antcontrib/antcontrib.properties" />

<!-- 预定义类文件、源文件的合并集合 -->
<path id="jacoco.class.files">
</path>
<fileset id="jacoco.source.files" encoding="UTF-8">
</fileset>

<!-- 遍历插件列表添加路径 -->
<loadfile property="plugin.list" srcFile="jacoco-plugins.list" />
<foreach list="${plugin.list}" delimiter="${line.separator}" param="plugin.id" trim="true">
    <sequential>
        <!-- 添加当前插件的class文件路径 -->
        <path refid="jacoco.class.files">
            <fileset dir="${buildDirectory}/plugins/@{plugin.id}/bin">
                <include name="**/*.class" />
            </fileset>
        </path>
        <!-- 添加当前插件的源文件路径 -->
        <fileset refid="jacoco.source.files">
            <fileset dir="${buildDirectory}/plugins/@{plugin.id}/src">
                <include name="**/*.java" />
            </fileset>
        </fileset>
    </sequential>
</foreach>
  1. 直接在jacoco:report中引用预定义的集合即可:
<jacoco:report>
    <executiondata>
        <file file="${coverage.metadata.file}"/>
    </executiondata>
    <structure name="JaCoCo Coverage Report">
        <classfiles>
            <path refid="jacoco.class.files" />
        </classfiles>
        <sourcefiles encoding="UTF-8">
            <fileset refid="jacoco.source.files" />
        </sourcefiles>
    </structure>
    <html destdir="${coverage.html.dir}"/>
    <csv destfile="${coverage.csv.file}"/>
    <xml destfile="${coverage.xml.file}"/>
</jacoco:report>
方案2:无需维护列表,自动匹配所有符合规则的插件

如果不需要手动指定插件范围,只要匹配所有com.gandu*开头的插件,可以直接用<dirset>自动扫描,不需要额外依赖:

<!-- 批量生成类文件集合 -->
<path id="jacoco.class.files">
    <fileset dir="${buildDirectory}/plugins">
        <include name="com.gandu*/bin/**/*.class" />
    </fileset>
</path>

<!-- 批量生成源文件集合 -->
<fileset id="jacoco.source.files" dir="${buildDirectory}/plugins" encoding="UTF-8">
    <include name="com.gandu*/src/**/*.java" />
</fileset>

后续jacoco:report的配置和方案1完全一致,直接引用对应的id即可。

注意:如果你的编译输出目录是@dot而不是bin,把路径里的bin替换成@dot即可正常匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:00:07