2012-11-26 35 views
5

我想包括文件zipfileset,但其重命名以及蚂蚁zipfileset重命名文件

例如

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

,但想改变test.warsample.war

如何实现这一目标?谢谢。

回答

1

我不认为这是可能的,我会去2个步骤的方法。

要么重新命名,并添加:

<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> 
0

除了由Peter提到的解决方案,如果你不希望保留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"/> 

现在您不会有重复副本o f test.war。

5

你可以用mappedresources resource collection做你想做的。 在基本测试这种“为我工作”(一个输入的战争称为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 
0

马丁·克莱顿的回答为我工作。我也能够在一个元素(如儿童)中做到这一切:

<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>