我有一些看起来像这样的ant逻辑:
<copy todir="src_@{version}" flatten="true">
<fileset dir="${generic-libs.source}\prolo">
<include name="**/*.c"/> <!-- all .c files including subfolders -->
<include name="**/*.h"/> <!-- all .h files including subfolders -->
<exclude name="**/test/*.*" /> <!-- exclude test (sub)folders -->
<exclude name="**/test*.*" /> <!-- exclude remaining test sources -->
</fileset>
<fileset dir="${generic-libs.source}\genlo">
<include name="**/*.c"/>
<include name="**/*.h"/>
<exclude name="**/test/*.*" />
<exclude name="**/test*.*" />
</fileset>
<fileset dir="${generic-libs.source}\ptclo">
<include name="**/*.c"/>
<include name="**/*.h"/>
<exclude name="**/test/*.*" />
<exclude name="**/test*.*" />
</fileset>
...
</copy>
Run Code Online (Sandbox Code Playgroud)
......还有10个相同的结构.
fileset标签的内容总是一样的,所以我想有一种方法可以缩短它吗?
Ant 1.9.4 为此目的引入了multirootfileset:
新的resourcecollection类型的行为类似于
<fileset>s和<dirset>s 的并集,它们共享相同的配置但具有不同的基目录.
在你的情况下像:
<multirootfileset basedirs="${generic-libs.source}\prolo,${generic-libs.source}\genlo,${generic-libs.source}\ptclo">
<include name="**/*.c"/>
<include name="**/*.h"/>
<exclude name="**/test/*.*"/>
<exclude name="**/test*.*"/>
</multirootfileset>
Run Code Online (Sandbox Code Playgroud)