我想包含文件zipfileset
但也重命名它
例如
<zipfileset dir="${basedir}/test/target" prefix="webapps">
<include name="test*.war"/>
</zipfileset>
但想将名称从更改test.war
为sample.war
如何做到这一点?谢谢你。
mappedresources
您可能可以使用资源集合来做您想做的事情。这在一个基本测试中“对我有用”(一个名为 的输入战争test1.war
):
<mappedresources id="mapped.zfs">
<zipfileset dir="${basedir}/test/target">
<include name="test*.war"/>
</zipfileset>
<globmapper from="test*" to="webapps/sample*" />
</mappedresources>
<zip destfile="eg.zip">
<resources refid="mapped.zfs" />
</zip>
% unzip -l eg.zip
Archive: eg.zip
Length Date Time Name
--------- ---------- ----- ----
0 11-27-2012 00:19 webapps/
1423 11-27-2012 00:16 webapps/sample1.war
--------- -------
1423 2 files
马丁克莱顿的回答对我有用。我也能够在一个元素中完成所有操作(作为孩子):
<zip destfile="eg.zip">
<mappedresources>
<zipfileset file="test*.war"/>
<globmapper from="test*" to="webapps/sample*" />
</mappedresources>
<!-- additional file-sets and resources may be listed here -->
</zip>
我认为这是不可能的,我会采用两步法。
重命名并添加:
<move file="${basedir}/test/target/test.war" tofile="${basedir}/test/target/sample.war"/>
<zipfileset dir="${basedir}/test/target" prefix="webapps">
<include name="sample*.war"/>
</zipfileset>
或复制并添加(如果您需要两者):
<copy file="${basedir}/test/target/test.war" tofile="${basedir}/test/target/sample.war"/>
<zipfileset dir="${basedir}/test/target" prefix="webapps">
<include name="sample*.war"/>
</zipfileset>
除了彼得提到的解决方案,如果您不想保留同一文件的 2 个副本...您可以删除复制的一个...
<copy file="${basedir}/test/target/test.war" tofile="${basedir}/test/target/sample.war"/>
<zipfileset dir="${basedir}/test/target" prefix="webapps">
<include name="sample*.war"/>
</zipfileset>
<delete file="${basedir}/test/target/sample.war"/>
现在您将没有 test.war 的重复副本。