好的,这看起来应该很简单。我正在使用 Apache Ant 1.8,我有一个目标:
<delete file="output/program.tar.bz2"/>
<tar basedir="input" destfile="output/program.tar.bz2" compression="bzip2">
<tarfileset dir="input">
<include name="goodfolder1/**"/>
<include name="goodfolder2/**"/>
<exclude name="**/badfile"/>
<exclude name="**/*.badext"/>
</tarfileset>
</tar>
我希望它生成 input/goodfolder1 和 input/goodfolder2 的 .tar.bz2,不包括名为“badfile”的文件,不包括扩展名为“.badext”的文件。它给了我一个 .tar.bz2,但它包括 badfile 和 *.badext——排除项似乎被忽略了。
包含/排除的顺序似乎没有什么区别。我尝试将包含/排除包装在 a 中(文档说它是隐含的?),但没有任何区别。
我确信我缺少一些简单的东西,因为手册有一个非常相似的例子,尽管在一些不同的上下文中。
编辑:看起来它可能与dir="input"
属性有关:它在“输入”中添加所有内容,然后将 tarfileset 中的所有内容添加到该属性中。我想要的文件在 program.tar.bz2 中出现两次,但被排除的文件只出现一次。但是dir
是强制性的,我看不出这与手册中的示例有何不同。