Хорошо, кажется, что это должно быть очень просто. Я использую 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>
Я хочу, чтобы он создал .tar.bz2 из input/goodfolder1 и input/goodfolder2, исключая файлы с именем «badfile» и исключая файлы с расширением «.badext». Он дает мне .tar.bz2, но включает badfile и *.badext — кажется, что исключения игнорируются.
Порядок включения/исключения, похоже, не имеет значения. Я попытался обернуть включения/исключения в (документы говорят, что это неявно?), но это не имело никакого значения.
Я уверен, что я упустил что-то простое, поскольку в руководстве есть очень похожий пример, хотя и в несколько ином контексте.
РЕДАКТИРОВАТЬ: Похоже, это может быть связано с атрибутом dir="input"
: он добавляет все во «вход», а затем добавляет к этому все в tarfileset. Файлы, которые я хочу, дважды появляются в файле program.tar.bz2, а исключенные файлы появляются только один раз. Но dir
является обязательным, и я не вижу, чем это отличается от примеров в руководстве.