如果你不想(或可不容易)单独列出每个文件,一种解决方案是使用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