簡體   English   中英

Ant:關於dirsets的兩個問題

[英]Ant: Two questions about dirsets

我有兩個關於Apache Ant中dirset類型的問題。

  • dirset真的是一套,沒有保證訂單,還是保留了輸入訂單? 我想使用ant:contrib來迭代一組目錄和命令事項,所以如果Ant的dirset不保留插入順序,我還有什么替代方案?
  • 如何測試dirset中是否包含某個dir?

[編輯]

如果你看看dirset 看起來它使用java File.list() ,其文檔聲明沒有gauranteed訂單。 所以,你絕對不能指望這一點。 但是,在返回之前調用Arrays.sort(files); 見1572行。


根據保留順序,我不能說,我會冒險,沒有保證,但它通常只是保留文件系統順序。

至於測試,我認為你想要,如果這個文件存在或類似的東西,使用ant contrib,做行動,

<for param="directory">
<dirset dir="dirIneedtoexist">
</dirset>
<sequential>
     <!-- Stuff to do if it exists. -->          
</sequential>
</for>

如果dirset中沒有任何東西,如果不做任何事情。

根據這個頁面

dirset將目錄集添加到隱式構建路徑。 請注意,目錄將以特定順序添加到構建路徑中,因此如果順序很重要,則應使用文件列表!

這是關於如何使用FileList的鏈接

關於dirset的Ant文檔中沒有太多內容。

如果您使用patternset ,則無法保證訂單。

如果使用include ,列出單個目錄而不是模式, dirset應保留順序。 我確實會對此進行測試。

編輯添加:如果我錯了,您可以編寫自己的Ant自定義任務以保留包含目錄的順序。

不,它不會保留秩序。

dirset的內容基於其父類通過DirectoryScanner公開的內容。 該掃描程序遍歷文件系統,不按任何特定順序執行。

它還使用File.list ,它是訂單非確定性的來源:

無法保證結果數組中的名稱字符串將以任何特定順序出現; 特別是,它們不保證按字母順序出現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM