Cómo evitar copiar dependencias con Ivy

Estoy buscando utilizar Ivy para administrar dependencias, pero ¡vaya! ¡A esa cosa realmente le gusta hacer varias copias de los flasks! ¡Se propaga como la hiedra en mi patio trasero y es tan indeseable!

¿Es posible hacer que Ivy simplemente defina un classpath (para un perfil específico) que haga referencia a las dependencias resueltas para que mi javac pueda referenciarlas directamente en el repository ivy (o caché?).

He leído los documentos de referencia solo comprar, vea la opción para configurar enlaces simbólicos al caché del repository. Supongo que esto será suficiente, pero parece una pérdida. Además, no estoy seguro de que una tarea de “guerra” pueda construir la guerra desde vínculos simbólicos … pero creo que lo descubriré cuando lo pruebe.

¿Alguna mejor sugerencia?

Aquí está mi archivo de comstackción Java estándar que crea un jar ejecutable.

El objective es administrar elementos específicos del proyecto mediante una combinación de propiedades ANT y un archivo ivy.xml para las dependencias de terceros.

                                   

Como descubriste en el documento de Ivy, la tarea cachepath se usa para administrar dos rutas de ANT. Uno para las dependencias de comstackción el otro para las dependencias de tiempo de ejecución del jar ejecutable.

El verdadero poder de Ivy se encuentra en algo llamado configurations . Inicialmente, me resultó difícil comprenderlo hasta que me di cuenta de que era simple una agrupación lógica de jar que puedo definir para mi proyecto. Este ejemplo tiene dos configurations :

  • build
  • runtime

Aquí está el archivo ivy que muestra cómo se pueden asociar las dependencias con las configurations :

            

En conclusión, espero que este ejemplo ayude a comprender a Ivy. Me gusta la forma en que se concentra en una sola cosa, la gestión de dependencias de terceros.

Después de luchar con la documentación mal escrita de Ivy (suspirar, ¿qué pasa con esta gente?) ¿No asistieron a clases de alfabetización de la escuela secundaria en algún idioma?), Veo que hay una tarea posterior a la resolución llamada cachepath que construirá una ant ruta a los artefactos de dependencia resueltos en lugar de copiar archivos a un directorio lib. ¡Esto podría ser justo lo que estoy buscando!

Solo para boost la respuesta de @ Mark.

Tenga en cuenta que el resultado de cachepath también se puede usar directamente en la comstackción sin la necesidad de copiar los cachepath con retrieve :