Как исключить каталог, который уже включен в Ant FileSet? - PullRequest
2 голосов
/ 19 июля 2010

Я использую задачу jar в ant и хочу исключить определенный каталог. Структура каталогов примерно такая:

food
 |_ fruits
     |_ apples
     |_ bananas

(сделанный общим и немного упрощенным)

И у меня есть задача муравья, подобная этой:

<jar destfile="Dest.jar">
    ...
    <fileset dir="food">
            <exclude name="**/bananas/" />
            <exclude name="**/*Test*" />
            <include name="**/*.class" />
    </fileset>
    ...

Я пытаюсь сделать следующее:

  • включает все файлы, заканчивающиеся на ".class" (это работает)
  • исключить все файлы, которые имеют "Test" в имени файла (это работает)
  • исключить весь каталог с именем "bananas" ( это не работает )

Я пробовал несколько комбинаций подстановочных знаков, пытаясь исключить каталог бананов, но безрезультатно. Я также попытался изменить порядок включения и исключения, хотя я понятия не имею, если это имеет значение. Я также попробовал несколько других предложений [1] [2], которые не сделали работу. Мое дикое предположение на данный момент состоит в том, что в каталоге bananas есть файлы, которые соответствуют "* .class", поэтому я думаю, что их включение предотвращает исключение бананов.

NB. Я точно сопоставляю настоящее имя каталога бананов, поэтому проблема с учетом регистра не должна быть проблемой. Если это может упростить задачу, я могу сослаться на полный путь к каталогу, хотя я бы предпочел быть более дружественным к рефакторам в задаче ant.

Как я могу исключить каталог, который уже включен в набор файлов ant?


[1] http://www.velocityreviews.com/forums/t146608-in-ant-how-do-you-exclude-a-directory-from-copy-or-zip.html
[2] http://www.java2s.com/Tutorial/Java/0520__Ant/filesetwithexclude.htm

1 Ответ

2 голосов
/ 19 июля 2010

Я обнаружил причину проблемы, и это не имело никакого отношения к тому, как была написана задача муравья.

Проблема, по-видимому, не имеет ничего общего с набором файлов, включающим и исключающим, а также с тем, создавался ли файл JAR на самом деле или нет. После многократного запуска задачи и всегда использования одного и того же места назначения для jar создается впечатление, что созданный файл jar не заменил существующий jar (как я и предполагал). Удаление банки и повторное выполнение задачи муравья дали ожидаемые результаты.

Я не знаю, должен ли я чувствовать себя глупо, предполагая, что файл будет заменен, или если я прав, если чувствую себя обиженным, в нем нет сообщений журнала, комментарии приветствуются. Anyhoo, проблема решена.

...