Удаление плюща нежелательных (старых) артефактов из кэша плюща - PullRequest
4 голосов
/ 14 сентября 2010

У меня есть локальный репозиторий Artifactory, в котором у меня есть две банки для commons-logging: один для version 1.0.4 и один для version 1.1.1. Я экспериментирую с использованием Ivy для загрузки более старой версии с заданием ant (с соответствующим тегом зависимости в ivy.xml), а затем я изменяю атрибут "rev" этого тега зависимости на 1.1.1.

При использовании ivy: resol в ant, этот новый jar успешно загружается в мой кеш, но старый не удаляется автоматически, и я бы хотел, чтобы это произошло.

Я не могу понять, как это сделать после просмотра документации по Ivy; Кто-нибудь знает, как заставить Айви удалять старые версии артефактов при загрузке новых, либо с помощью задачи разрешения, либо чего-то еще?

Ответы [ 2 ]

4 голосов
/ 28 сентября 2012

На самом деле нет проблем с наличием «старой» банки в вашем кеше. Если вашему проекту не нужна старая банка, Айви просто проигнорирует ее. Старая банка занимает около 50 килобайт в вашей системе. В эпоху терабайтных дисков освобождение места не стоит времени и усилий.

Кеш Ivy - это просто кеш. Это для ALL ваших проектов, которые используют Ivy. Если более старый проект требует версию 1.0.4 jar-файла регистрации общего доступа, он уже будет в кэше Ivy и его не нужно загружать, поэтому, как и хорошие кэши, он экономит ваше время и усилия.

Вы можете сделать <ivy:cleancache>, но это действительно вычистит весь ваш кеш: все будет удалено. Он избавится от старой версии jar 1.0.4, но также избавится и от версии 1.1.1 jar. Конечно, Ivy просто загрузит его в следующий раз, когда его запросят, но это означает, что Ivy загрузит все ваши банки.

Кстати, это одна большая проблема с <ivy:cleancache>: если вы делаете несколько сборок с Ivy и одна очищает кеш на вас, вы в конечном итоге сломаете другие сборки. Обычно это не проблема для отдельных пользователей, но это может быть для системы непрерывной интеграции.

Если вы посмотрите на документацию Ivy, то там говорится, что <ivy:cleancache> такой же, как:

<delete dir="${ivy.cache.dir}" />

Вы можете использовать это в качестве основы для удаления старых банок, используя селектор даты :

<delete dir="${ivy.cache.dir}">
    <date datetime="01/01/2010 12:00 AM" when="before"/>
    <include name="*.jar"/>
</delete>

Однако при этом используется измененная дата банки, а не дата создания банки.

Игнорируйте ваш каталог кэша Ivy и не беспокойтесь об этом. Если кэширование Ivy становится слишком большим, вы можете удалить его, и Ivy просто перезагружает новые банки по мере необходимости.

2 голосов
/ 15 сентября 2010

Я всегда включаю ANT "realclean" цель, которая дополнительно очищает мой кеш плюща.

<target name="clean">
    <delete dir="${build.dir}"/>
</target>

<target name="realclean" depends="clean">
    <ivy:cleancache/>
</target>

Доко

...