2012-07-09 54 views
2

我試圖讓Ant在fileset中包含一個目錄,而不必訴諸冗長的解決方案(除非我真的必須)。也許我錯過了一些明顯的東西。Ant包括fileset中的目錄內容,同時壓扁路徑/ to /目錄

<copy todir="targetdir"> 
    <fileset dir="@{source}"> 
     <include name="**/somedir/" /> 
    </fileset> 
</copy> 

我試圖讓的somedir內容,包括所有子目錄,從@{source}/path/to/somedir雖然沒有明確地知道哪裏somedir是。

所以,說somedir有兩個子目錄,sub1sub2,我們的目標是有這兩個目錄中targetdir結束(包括其所有內容)。

我不能將所有東西弄平,因爲這會殺死子目錄內的目錄結構,上面提到的當前解決方案給我留下了包含somedirtargetdir,而不僅僅是它的內容。

我不想在之後移動目錄,因爲理論上我可以在具有各種路徑的文件集中包含多個包含,所有這些都需要相同的副本。

回答

2

有幾種方法可以在複製元素中使用mappers。最簡單的方法是使用cut dirs mapper,但您需要知道您想要從路徑中切下的目鏡的數量。你也可以使用一個regexp mapper刪除前導迪爾斯:

<regexpmapper from="^(([^/]*/)+?)/somedir/(.*)$$" to="\2"/> 

以上是未經測試,但應該定義2個捕獲組,somedir和somedir後前位的一切,取而代之的是隻在第二組。

相關問題