2016-04-22 22 views
1

在我們的項目中,我們使用Ant來分發文件。有文件的層次結構,它們覆蓋上一層的文件。像這樣:default - level1 - level2。目前,它是由方式:Ant是否保證文件集的順序?

<copy todir="..."> 
<fileset dir="${root}/default" includes="**/*" excludes="file1" /> 
<fileset dir="${root}/level1" includes="**/*" /> 
<fileset dir="${root}/level2" includes="**/*" excludes="file2"/> 
</copy> 

所以,我們希望所有的文件夾包含具有相同名稱的文件,它將從level2的目錄中取。

不久前,我們轉移到另一個版本的Java的新建框,我們發現文件集的順序被破壞。

有沒有辦法解決這個問題,而無需修改螞蟻配置文件?我們有很多數目。如果沒有辦法,我怎麼能便宜呢?謝謝。

+0

請參閱[ant copy copying order](http://stackoverflow.com/questions/32716398/ant-copy-copying-order)瞭解可能的解決方案。 「 –

回答

1

我不知道文件集的順序是否有保證,但副本任務的順序是。 所以,this answer的建議下,它可能是一個好主意,寫幾個副本任務,覆蓋=「真」:

<copy todir="..."> 
    <fileset dir="${root}/default" includes="**/*" excludes="file1" /> 
</copy> 
<copy todir="..."> 
    <fileset dir="${root}/level1" includes="**/*" overwrite="true" /> 
</copy> 
<copy todir="..."> 
    <fileset dir="${root}/level2" includes="**/*" excludes="file2" overwrite="true" /> 
</copy> 
1

您可以環繞你filesetsort資源集合,並確保使用的順序通過這種方式複製。排序本身只將一個資源集合看作子元素,因此您需要將fileset包裝在unionresources容器中。

http://ant.apache.org/manual/Types/resources.html#sort

喜歡的東西

<sort> 
    <resources> 
    <fileset dir="${root}/default" includes="**/*" excludes="file1" /> 
    <fileset dir="${root}/level1" includes="**/*" /> 
    <fileset dir="${root}/level2" includes="**/*" excludes="file2"/> 
    </resources> 
    <name/> 
</sort> 

按名稱排序文件。

+0

」排序期望恰好一個嵌套的資源集合。「 - 我無法將兩個文件集傳遞給它 – awfun

+0

,而是'文件集'的'聯合' - 或者如果您關心重複的名稱和'fileset'的'資源'。 –

相關問題