2013-01-18 22 views
1

如何在Ant中創建一個動態的文件列表,然後保存此列表供以後在構建過程中使用?我在想的是像不可變的FilesetFilelist將不起作用,因爲它不接受通配符。Ant:如何創建一個不可變的Fileset?

換句話說,我想創建一個基於include/excludes通配符的文件列表,一旦它創建就不會改變。也就是說,即使稍後通過包含/排除規則添加了更多文件,我也想保留最初的文件集結果(專門用於稍後在構建過程中刪除)。這可能嗎?

+0

看起來令人驚訝,這並不容易。使用''這會導致在使用相同的'refid'時導致不同的結果,這是一個棘手的問題。 –

回答

0

嗯,這是我想出來的。使用pathconvert將文件集存儲到屬性。然後在構建版本中迭代文件,做任何你需要的東西。在我的情況下,刪除它們。

<macrodef name="storeBuildState"> 
    <sequential> 
     <fileset dir="${build.dir}" id="current.fileset"> 
      <include name="**/*.jar" /> 
     </fileset> 

     <pathconvert pathsep="," property="current.fileset.prop" refid="current.fileset"/> 
    </sequential> 
</macrodef> 



<macrodef name="deleteStoredBuildState"> 
    <sequential> 
     <for list="${current.fileset.prop}" param="file"> 
      <sequential> 
       <delete file="@{file}" verbose="true" /> 
      </sequential> 
     </for> 
    </sequential> 
</macrodef> 
相關問題