我的 build.xml
中有许多任务都使用相同的文件集 . 例如 . 类似下面的内容(我保留了任务的实际名称 - 与cobertura覆盖工具相关 - 但包络任务的性质对于这个问题并不重要) .
<target name="coverage-report">
<cobertura:cobertura-report destdir="${coverage.xml.dir}" format="xml">
<fileset dir="${src.dir}">
<include name="**/*.java" />
</fileset>
<fileset dir="${componentFoo.dir}/src">
<include name="**/*.java" />
</fileset>
</cobertura:cobertura-report>
</target>
<target name="summary-coverage-report">
<cobertura:cobertura-report destdir="${coverage.summaryxml.dir}" format="summaryXml">
<fileset dir="${src.dir}">
<include name="**/*.java" />
</fileset>
<fileset dir="${componentFoo.dir}/src">
<include name="**/*.java" />
</fileset>
</cobertura:cobertura-report>
</target>
<target name="alternate-coverage-report">
<cobertura:cobertura-report destdir="${coverage.html.dir}">
<fileset dir="${src.dir}">
<include name="**/*.java"/>
</fileset>
<fileset dir="${componentFoo.dir}/src">
<include name="**/*.java" />
</fileset>
</cobertura:cobertura-report>
</target>
我想要做的是能够定义一次这个重复出现的文件集并重用它 . 现在,关于如何在多个地方使用相同的文件集有一个相关的SO question但是这里不起作用,因为我有许多文件集,而不仅仅是一个 . 我还尝试将文件集包装在 macrodef
中,并在需要时扩展 macrodef
,但我得到的消息是这些任务"don't support the nested [name of macrodef] element" . 所以我想Ant中的 macrodef
只能用作高级任务,不能在任意位置扩展 .
那么有没有办法在Ant中重用多个文件集的定义?
1 回答
如果cobertura任务接受任意资源集合而不是硬编码为
fileset
,这将很容易 - 为此目的提交功能请求可能是值得的 . 例如,使用copy
任务:您可以回退到纯XML级别并使用实体引用: