Как настроить Apache Ivy для удаления потерянных артефактов? - PullRequest
6 голосов
/ 18 апреля 2009

Допустим, у меня есть ivy.xml, который содержит следующее:

  <dependency org="checkstyle" name="checkstyle" rev="4.3" />

А затем я хочу перейти на Checkstyle 4.4, поэтому я изменяю ivy.xml на:

  <dependency org="checkstyle" name="checkstyle" rev="4.4" />

После retrieve с первой конфигурацией у меня есть файл checkstyle-4.3.jar. После второй конфигурации у меня также есть файл checkstyle-4.4.jar, а файл checkstyle-4.3.jar все еще существует.

Есть ли способ заставить Айви понять, что старый файл является сиротой, и удалить его из каталога lib? Идея заключается в том, что я не хочу, чтобы использование диском пространства моих разработчиков резко увеличивалось при каждом обновлении инструмента.

В идеале я бы хотел, чтобы он также был удален из локального хранилища. Я понимаю, что целью локального репозитория является то, что он является общим для проектов, поэтому не имеет смысла что-либо удалять, поскольку он не знал бы, использовался ли артефакт в других проектах. Но должна быть какая-то процедура чернослива ...

1 Ответ

10 голосов
/ 19 апреля 2009

Я использую Ivy 2.0.0, поэтому не знаю, относится ли это к используемой вами версии.

Задание Ivy retrieve имеет атрибут sync. Задайте для этого параметра значение true, и неиспользуемые / неизвестные файлы в вашем извлеченном каталоге (lib в вашем случае) будут удалены. Имейте в виду, что это будет означать, что любые скопированные вручную артефакты в этом каталоге, которые Ivy специально не разрешает, будут удалены.

Также обратите внимание, что если вы используете опцию sync, но Ivy не разрешает никаких зависимостей (например, пусто или отсутствует ivy.xml), каталог извлечения будет удален.

...