6

我想包含文件zipfileset但也重命名它

例如

<zipfileset dir="${basedir}/test/target"   prefix="webapps">
    <include name="test*.war"/>
</zipfileset>

但想将名称从更改test.warsample.war

如何做到这一点?谢谢你。

4

4 回答 4

7

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
于 2012-11-27T00:25:13.847 回答
1

马丁克莱顿的回答对我有用。我也能够在一个元素中完成所有操作(作为孩子):

<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>
于 2014-09-05T17:51:27.110 回答
1

我认为这是不可能的,我会采用两步法。

重命名并添加:

<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>
于 2012-11-26T12:59:31.007 回答
0

除了彼得提到的解决方案,如果您不想保留同一文件的 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 的重复副本。

于 2012-11-26T19:02:36.940 回答