2013-01-11 97 views
2

所以我有一個包含在一個目錄中的文件文件集:刪除文件集的文件名,但在不同的目錄

<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}包含核心* .jar,文件集* .jar等的副本。 如何刪除這些複製的文件?


此外,請注意我不能使用外部庫如ant-contrib。

回答

3

使用PatternSet來定義一組名稱。然後在任意數量的FileSets中引用該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> 

UPDATE:

既然你想只有原來的文件在您的評論,試試這個:

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

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

假設下一個步驟是創建於$ {LIB文件集。 dir}匹配module.patterns模式集,這不起作用。這是因爲我的$ {lib.dir}包含其他核心* .jar文件,這些文件不存在於$ {modules.dir}中(並且未被複制),我也不想刪除這些文件。 – Amil

+0

很酷,感謝您的更新! – Amil

+0

這個答案可能也有幫助:http://stackoverflow.com/questions/13290555/ant-how-to-delete-files-that-are-not-present-in-another-directory – satur9nine

相關問題