que estoy usando Maven 2.2 con Nexus 1.4.0experto desplegar cambiaron artefactos única
Digamos que tengo una estructura pom así (con las versiones correspondientes)
parentproj, v1.0.1
- childproj1, v1.0.2
- childproj2, v1.0.7
childproj1 y childproj2 representan diferentes partes de la aplicación (p. ej., gui y back-end) y deseo poder mantener sus versiones separadas para que pueda lanzar una nueva versión del backend sin tener que lanzar una nueva versión de la interfaz gráfica de usuario.
Ahora, para implementar esta estructura para Nexus sería conveniente para ir a parentproj y decir
mvn desplegar -DperformRelease = true
que desplegar todos los artefactos en el repositorio de Nexus realease . Esto funciona bien la primera vez que desplegarlo, pero la segunda vez que se encuentran con problemas: digamos que hice una actualización de childproj1 por lo que ahora tenemos las siguientes versiones:
parentproj, v1.0.1
- childproj1, v1.0.3
- childproj2, v1.0.7
En esta situación Nexus no lo hará permítanme implementar mvn desde parentproj, ya que ya tiene una copia de childproj2 en la versión 1.0.7. Nexus dirá "Recurso, solicitud ilegal: Repositorio con ID = 'lanzamientos' no permite la actualización de artefactos". Esto está bien, no quiero actualizar las versiones existentes por error.
Pero supongo que lo que me gustaría hacer es poder decirle a maven algo así como "implementar solo los artefactos que tienen versiones que no están ya presentes en el repositorio de versiones".
¿Hay alguna manera de hacerlo, o tendré que implementar cada proyecto por sí mismo?
Gracias por su respuesta, John, también estamos investigando ese enfoque y podría ser el que lo tome al final. Estoy de acuerdo en que la coherencia de la versión aporta mucho valor, pero también me temo que para un proyecto grande, el proceso de compilación puede ser demasiado engorroso y lento si tiene que actualizar toda la plataforma para cualquier cambio. – David
+1 como sugerencia del uso (correcto y correcto) del calificador SNAPSHOT en la versión para resolver este problema. – whaley
No estoy de acuerdo con la última declaración acerca de compilarse y probarse juntos. Si tiene dependencias de versiones corregidas en JAR, Maven compilará su proyecto utilizando esos JAR para que pueda obtener todo compilado junto con SNAPSHOT o dependencias de versión fija. En cuanto a las pruebas, con verdaderas pruebas unitarias, creo que las dependencias de clase, especialmente sobre los límites JAR, deberían ser burladas. Esto significa que su código nunca se probará a menos que tenga algún tipo de prueba funcional/de integración ejecutándose contra la aplicación implementada, entonces SNAPSHOT o la versión fija no importarían nuevamente. –