是否可以拥有包含多个源目录的文件集?

时间:2014-09-23 10:03:12

标签: 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个相同的构造。

fileset标签的内容总是一样的,所以我想有一种方法可以缩短它吗?

1 个答案:

答案 0 :(得分:5)

Ant 1.9.4为此目的引入了multirootfileset

  

新的resourcecollection类型就像<fileset><dirset>的联合,它们共享相同的配置但具有不同的基目录。

在您的情况下,例如:

<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>