2012-10-16 53 views
1

我們希望構建多個zip文件,其中一些文件的內容與其他文件相同。而不是指定每個zip文件的完整列表(它們實際上相當大),我想我會嘗試重新使用。如何在Ant中重用多個zipfileset元素?

所以我試圖用<union>此:

<project name="test" default="zips"> 
    <target name="zips"> 
    <union id="common"> 
     <zipfileset prefix="." dir="." includes="1"/> 
     <zipfileset prefix="3" dir="." includes="2"/> 
    </union> 
    <zip zipfile="1.zip"> 
     <resources refid="common"/> 
    </zip> 
    <zip zipfile="2.zip"> 
     <resources refid="common"/> 
    </zip> 
    </target> 
</project> 

這不會產生與「1」和「2」中每兩個zip文件,但「3」字頭的兩個文件丟失。

我在做什麼錯?

我們還有一個自定義任務,它在內部使用zipfileset。我試圖讓它與union一起工作,但無法弄清楚如何獲得前綴值。

回答

2

試試這個你common resourcecollection:

<union id="common"> 
    <fileset dir="." includes="1"/> 
    <mappedresources> 
     <fileset dir="." includes="2"/> 
     <globmapper from="*" to="3/*"/> 
    </mappedresources> 
</union> 

zipfilesetprefix參數讀數從與src參數指定的歸檔文件時才使用,否則將被忽略 - 這是你看到的行爲。 爲了您的使用,您正嘗試在創建的歸檔中指定前綴。要做到這一點,你需要一個映射器。

參見:螞蟻文檔爲mappedresources.

+0

有趣。所以我想這是一個棘手的問題。 裏面確實使用了前綴,但我去看看,看起來zip壓縮任務明確地查找它並將其轉換爲映射器。 – Trejkaz

+0

只有一個catch在實踐中實現它 - 我無法弄清楚如何從我們的自定義任務中的Resource對象派生文件的位置。 :) – Trejkaz

相關問題