创建与模式匹配的所有文件的文件集,不包括具有特定兄弟文件的文件

时间:2011-08-22 21:32:13

标签: ant build fileset

我想创建一个匹配特定模式的文件的文件集,但是从该集中排除在同一目录中具有特定其他文件的任何文件。

例如,我想要一个匹配所有./*/file.xml文件的文件集,例如:

<fileset dir="${some.dir}" includes="*/file.xml" />

...但我想排除与ignore.this文件在同一个导演中的所有file.xml文件。

所以如果dir结构是:

foo/file.xml
bar/file.xml
bar/ignore.this

...将选择foo中的file.xml,但bar不会。

1 个答案:

答案 0 :(得分:3)

您可以将带有present selector的文件集与映射器一起使用:

<fileset dir="${some.dir}" includes="*/file.xml">
    <present targetdir="${some.dir}" present="srconly">
        <mapper type="regexp" from="^(.*)/.*" to="\1/ignore.this" />
    </present>
</fileset>

即,仅包含名为file.xml的文件,其中在名为ignore.this的同一目录中没有相应的文件。