Como você configurar o Apache Ivy para remover órfão artefatos?
Pergunta
Digamos que eu tenho um ivy.xml
que contém o seguinte:
<dependency org="checkstyle" name="checkstyle" rev="4.3" />
E então eu quero atualizar para Checkstyle 4.4, então eu mudar minha ivy.xml
para conter:
<dependency org="checkstyle" name="checkstyle" rev="4.4" />
Depois de um retrieve
com a primeira configuração, eu tenho a checkstyle-4.3.jar
arquivo. Após a segunda configuração, eu também tenho o checkstyle-4.4.jar
arquivo, eo checkstyle-4.3.jar
arquivo ainda existe.
Existe uma maneira de ter Ivy perceber que o arquivo antigo é um órfão, e removê-lo do diretório lib
? A idéia é que eu não quero que o uso do espaço em disco dos meus desenvolvedores a aumentar drasticamente cada vez que eu atualizar uma ferramenta.
Idealmente, eu também quero isso removido do repositório local também. Eu reconheço que a intenção do repositório local é que ele é compartilhado entre os projetos, por isso não faria sentido para remover qualquer coisa, pois não saberia se o artefato ainda estava em uso em outros projetos. Mas deve haver algum tipo de procedimento de ameixa ...
Solução
Eu estive usando Ivy 2.0.0, então eu não sei se isso se aplica à versão que você está usando.
The Ivy retrieve
tarefa tem um atributo sync
. Defina esta opção para true
e / arquivos desconhecidos não utilizados em seu diretório recuperada (lib
no seu caso) serão removidos. Tenha em mente, isto significa qualquer artefatos copiados manualmente neste diretório que Ivy não especificamente determinação será removida.
Além disso, observe que, se você usar a opção sync
mas Ivy resolve sem dependências (vazio ou ivy.xml
desaparecidas, por exemplo), a recuperar diretório será excluído.