2009-04-18 3 views
5

Скажем, у меня есть ivy.xml, который содержит следующее:Как настроить Apache Ivy для удаления сиротских артефактов?

<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? Идея заключается в том, что я не хочу, чтобы использование дискового пространства моих разработчиков резко увеличивалось при каждом обновлении инструмента.

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

ответ

9

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

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

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

+0

Это именно то, что я искал, спасибо! Кстати, я использую 2.1.0-RC1. –

+0

Кстати, я решил, что это не удалит элементы из кеша. Поэтому преимущество заключается в том, что у вас не будет нескольких версий одного и того же баннера в вашем каталоге lib (что важно), но вы не сэкономите много места на диске. Случайный плющ: cleancache будет выполнять эту работу. –

Смежные вопросы