问题描述
|
如果我有一个包含多个子文件夹的文件夹(例如foo,bar,baz),如何使用ant分别将它们压缩到foo.zip,bar.zip和baz.zip中,而不用一个一个地将它们压缩?
理想情况下,还应该有一种方法来指定要压缩的文件/子文件夹,而不是“每个文件”。
解决方法
您不想使用ant-contrib。每次您使用ant-contrib都会糟透了,这会招致技术债务。使用蚂蚁时要记住的第一件事:让蚂蚁成为蚂蚁。蚂蚁就是它。它是声明性的。 ant的最初意图是简单地声明属性,并用Java来完成工作(在Java中,您有一个带有调试器和测试框架的真实IDE)。如蚂蚁样式元素中所述-“让蚂蚁成为蚂蚁”。如果必须使用ant-contrib,则应执行自己的ant任务。如果您无法做到这一点,请不要使用ant。 ant-contrib会使ant变得更糟ant会使它变得更糟,您很快就会发现无法维护的事情。足够的咆哮。
您甚至不需要为此做一个任务,这应该可以工作...它将/ 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>
, 我用ant contrib的for-each来做这种事情。您可能可以改善以下问题:Ant:如何对目录中的每个文件执行命令?