Hemos estado usando Ivy durante unos meses y tenemos nuestro propio "Ivy Repo" alojado en un servidor web aquí en la oficina. Todos nuestros proyectos están configurados para ir a este repositorio para resolver dependencias.Ivy: Resolución y publicación de JAR localmente
Tenemos varios JAR de tipo "comunes" que son utilizados por muchos de nuestros proyectos. Debido a esto, y porque sólo tenemos 1 repo, estamos encontrando una gran cantidad de fea cabeza procedente de la siguiente escenario:
- Un desarrollador se le da una tarea para agregar una función para el proyecto 1 (que depende de un frasco Común)
- Durante el transcurso del desarrollo del proyecto 1, el desarrollador se da cuenta de que él/ella tiene que realizar cambios en el tarro común
- cambios tarro Común se hizo
- tarro común tiene que pasar por la revisión de código y normal código de promoción
- Build master publica una nueva jar común
- Proyecto 1 puede reanudar el desarrollo ahora que el tarro común ha sido actualizado
Esto se está convirtiendo en ridículo y doloroso para nuestro equipo.
Para mí, la solución obvia es proporcionar objetivos ant en cada proyecto que permitan al desarrollador publicar/resolver localmente (hacia y desde su sistema de archivos). De esa forma, pueden dividir la jarra Common de 9 maneras hasta el domingo, pero sin perder 2 - 4 días mientras esperan que se publique Common. De esta forma, el desarrollador realiza cambios locales tanto en el Proyecto 1 como en Común, y el código pasa por nuestro proceso de promoción de una sola vez.
Sé que esto es posible con Ivy, pero soy tan nuevo que ni siquiera sé por dónde empezar.
Actualmente utilizamos un archivo global ivy.settings
para todos los proyectos. En el archivo de configuración, usamos una resolución de cadena que tiene 1 url resolver dentro de ella, que se conecta a nuestro "repo de hiedra".
Yo creo el siguiente es el único cambio que será necesario, pero no estoy 100% seguro:
- En
ivy.settings
que tendrá que añadir un sistema de archivos local de resolver antes de la url resolver se llama; De esta manera, comprobamos el sistema de archivos local para dependencias antes de pasar a la cesión temporal de hiedra (servidor web) - Configurar de
ivy.xml
con una opción de cada proyecto de alguna manera que permite caché local publicación - Tweak La hormiga construye para tener un objetivo
publish-locally
que ejerza la opción mencionada anteriormente
I creo estos cambios nos permitirán: (1) siempre buscamos a nivel local para dependencias antes de mirar al servidor web, (2) publicar localmente como una opción de generación (objetivo).
Si esto no es verdad, o si me faltan pasos, por favor avise! De lo contrario, probablemente pueda averiguar cómo agregar un sistema de resolución de archivos desde los documentos de Ivy, pero no tengo idea de cómo lograr que el objetivo publish-locally
funcione. ¿Algunas ideas? ¡Gracias por adelantado!