删除文件集文件名,但在不同的目录中

时间:2013-01-11 20:06:55

标签: ant directory fileset

所以我在一个目录中有一个包含文件的文件集:

<fileset id="modules" dir="${modules.dir}">
    <include name="core*.jar"/>
    <include name="fileset*.jar"/>
    <include name="upgrader*.jar"/>
    <include name="hello*.jar"/>
</fileset>

但是,这些文件被复制到$ {lib.dir}中,即$ {lib.dir}包含core * .jar,fileset * .jar等的副本。 如何删除这些复制的文件?


另外,请注意我不能使用像ant-contrib这样的外部库。

1 个答案:

答案 0 :(得分:3)

使用PatternSet定义名称集。然后在任意数量的FileSet中引用PatternSet。

<patternset id="module.patterns">
    <include name="core*.jar"/>
    <include name="fileset*.jar"/>
    <include name="upgrader*.jar"/>
    <include name="hello*.jar"/>
</patternset>

<fileset id="modules" dir="${modules.dir}" >
  <patternset refid="module.patterns"/>
</fileset>

<强>更新

鉴于您的评论只想要原始文件,请尝试以下方法:

<pathconvert pathsep="," property="flattened.modules" refid="modules">
    <mapper type="flatten" />
</pathconvert>

<filelist id="libmodules" dir="${lib.dir}" files="${flattened.modules}"/>