如果你不想(或可不容易)單獨列出每個文件,一種解決方案是使用Zip任務,該任務允許嵌套<mappedresources>
(Ant 1.8.0+)。一旦Zip任務完成,您可以使用Jar任務添加/更新清單和/或添加索引。
假設,例如,除了在輸出JAR想
yay_my.jar
boo_my.jar
foo_my.jar
bar_my.jar
,你也有一個目錄stuff/
,包含了一些文件和子目錄。如果你想包括在JAR stuff/
的內容,但你要stuff/subdir/*
被添加爲other_subdir/*
,考慮以下因素:
<zip destfile="newjar.jar">
<zipfileset dir="yay" includes="my.jar" fullpath="yay_my.jar"/>
<zipfileset dir="boo" includes="my.jar" fullpath="boo_my.jar"/>
<!-- etc. -->
<mappedresources>
<fileset dir="stuff"/>
<compositemapper>
<globmapper from="subdir/*" to="other_subdir/*"/>
<identitymapper/>
</compositemapper>
</mappedresources>
</zip>
<!-- Update the newly-created ZIP in-place to add a basic manifest -->
<jar destfile="newjar.jar" update="true"/>
我測試了構建文件,並將其與螞蟻1.8.2工作。但是,如果改變後它開始投擲NullPointerException
,請參閱Bug 54026。
我加入了一個例子來說明如何 – 2009-09-22 14:33:28
這是偉大的,但並沒有完成我的建築罐子未做文件的額外副本的目標。移動會避免複製,但是每次構建時都將重新生成罐子,而不僅僅是源文件已更改。 – skiphoppy 2009-09-22 16:27:29
但是,你建立的映射器標籤是真棒,我會在借款而不是來了我自己的一個。 :)我還沒有得到足夠遠的實際構建我需要但因爲我無法在所有得到任何映射器文件集和jar工作映射器。 – skiphoppy 2009-09-22 16:28:19