如何使用ant单独压缩多个文件夹?

时间:2011-06-10 00:16:37

标签: ant

如果我有一个包含多个子文件夹的文件夹(例如foo,bar,baz),我怎么能用ant将它们单独压缩到foo.zip,bar.zip和baz.zip中,而不是一个一个地执行?< / p>

理想情况下,还应该有一种方法来指定要压缩的文件/子文件夹而不是“每一个”。

2 个答案:

答案 0 :(得分:4)

您不想使用ant-contrib。 ant-contrib很糟糕,每次使用它时,都会产生技术债务。使用蚂蚁时要记住的第一件事:让蚂蚁成为蚂蚁。蚂蚁就是这样。它是声明性的。 The original intent of ant是属性的简单声明,并且工作的主要部分是在java中完成的(你有一个带有调试器和测试框架的真实IDE)。如elements of ant style中所述 - “让蚂蚁成为蚂蚁”。如果你必须使用ant-contrib,你应该做自己的ant任务。如果你不能这样做,不要使用蚂蚁。 ant-contrib采取最糟糕的蚂蚁使它变得更糟,你很快就会发现事情无法维持。足够的咆哮。

你甚至不需要为这个创建一个任务,这应该工作......它需要/ tmp中的所有目录并将其拉上。应该让你在那里大部分时间。

    <mapper id="zip" type="glob"
    from="*"
    to="*.zip"/>

<target name="zip-craziness">
    <apply executable="zip">
        <targetfile/>
        <srcfile/>
        <dirset dir="/tmp" />
         <mapper refid="zip"/>
    </apply>
</target>

答案 1 :(得分:0)

我使用 for-each from ant contrib来做这种事情。您可以改进这个问题:Ant: How to execute a command for each file in directory?