2009-04-18 24 views
5

Digamos que tengo una ivy.xml que contiene lo siguiente:¿Cómo se configura Apache Ivy para eliminar artefactos huérfanos?

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

y luego quiero actualizar a Checkstyle 4.4, por lo que cambiar mi ivy.xml contener:

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

Después de un retrieve con el primera configuración, tengo el archivo checkstyle-4.3.jar. Después de la segunda configuración, también tengo el archivo checkstyle-4.4.jar, y todavía existe el archivo checkstyle-4.3.jar.

¿Hay alguna manera de que Ivy se dé cuenta de que el archivo anterior es huérfano y lo elimine del directorio lib? La idea es que no quiero que el uso de espacio en disco de mis desarrolladores aumente drásticamente cada vez que actualizo una herramienta.

Lo ideal sería que también quisiera eliminarlo del repositorio local. Me doy cuenta de que la intención del repositorio local es que se comparte entre los proyectos, por lo que no tendría sentido eliminar nada, ya que no sabría si el artefacto todavía estaba en uso en otros proyectos. Pero debe haber algún tipo de procedimiento de poda ...

Respuesta

9

He estado usando Ivy 2.0.0, por lo que no sé si esto se aplica a la versión que está utilizando.

La tarea Ivy retrieve tiene un atributo sync. Establezca esto en true y los archivos no utilizados/desconocidos en su directorio recuperado (lib en su caso) serán eliminados. Tenga en cuenta que esto significará cualquier artefactos copiados manualmente en este directorio que Ivy no resuelve específicamente serán eliminados.

Además, tenga en cuenta que si utiliza la opción sync pero Ivy no resuelve ninguna dependencia (vacía o faltante ivy.xml, por ejemplo), se eliminará el directorio de recuperación.

+0

Eso es exactamente lo que estaba buscando, ¡gracias! Por cierto, estoy usando 2.1.0-RC1. –

+0

Por cierto, he determinado que esto no elimina los elementos del caché. Por lo tanto, la ventaja es que no tendrá múltiples versiones del mismo jar en su directorio lib (que es importante), pero no ahorrará mucho espacio en disco. Una hiedra ocasional: cleancache hará ese trabajo. –

Cuestiones relacionadas