Как мне удалить набор каталогов с помощью Ant? - PullRequest
13 голосов
/ 01 октября 2008

Я хочу удалить все каталоги и подкаталоги в корневом каталоге, которые содержат «tmp» в своих именах. Это должно включать любые файлы .svn тоже. Мое первое предположение - использовать

<delete>
    <dirset dir="${root}">
          <include name="**/*tmp*" />
    </dirset>
</delete>

Это не похоже на работу, поскольку вы не можете вложить dirset в тег delete.

Это правильный подход, или я должен делать что-то еще?

  • версия муравья == 1.6.5.
  • Java-версия == 1.6.0_04

Ответы [ 3 ]

23 голосов
/ 02 октября 2008

Вот ответ, который работал для меня:

<delete includeemptydirs="true">
    <fileset dir="${root}" defaultexcludes="false">
       <include name="**/*tmp*/**" />
    </fileset>
</delete>

У меня было дополнительное осложнение, которое мне нужно было удалить и каталоги .svn. С defaultexcludes, .* файлы были исключены, и поэтому пустые каталоги не были действительно пустыми, и поэтому не были удалены.

Атрибут includeemptydirs (спасибо, flicken, XL-Plüschhase) позволяет конечному подстановочному знаку ** соответствовать пустой строке.

5 голосов
/ 01 октября 2008

попробовать:

<delete includeemptydirs="true">
    <fileset dir="${root}">
          <include name="**/*tmp*/*" />
    </fileset>
</delete>

Спасибо, Фликен!

4 голосов
/ 25 февраля 2010

Я просто хотел добавить, что часть решения, которая работала для меня, добавляла /** в конец пути включения. Я попытался сделать следующее для удаления каталогов Eclipse .settings:

<delete includeemptydirs="true">
    <fileset dir="${basedir}" includes"**/.settings">
</delete>

но он не работал, пока я не изменил его на следующее:

<delete includeemptydirs="true">
    <fileset dir="${basedir}" includes"**/.settings/**">
</delete>

По какой-то причине добавление /** к пути удаляет файлы в соответствующем каталоге, все файлы во всех подкаталогах, подкаталогах и соответствующих каталогах. Добавление /* удаляет только файлы в соответствующем каталоге, но не удаляет соответствующий каталог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...