我有一些像这样的 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>
...还有 10 个以上相同的结构。
文件集标签的内容总是相同的,所以我想必须有一种方法来缩短它?
最佳答案
Ant 1.9.4 推出 multirootfileset为了这个目的 :
A new resourcecollection type acts like a union of
<fileset>
s and<dirset>
s that share the same configuration but have different base directories.
在你的情况下,类似:
<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>
关于ant - 是否可以拥有包含多个源目录的文件集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25992260/