Me gustaría poder desplegar solo el artefacto POM (archivo) sin el artefacto principal (JAR, WAR, etc.) al ejecutar mvn deploy
y la versión es una versión SNAPSHOT.¿Cómo puedo desplegar solo el archivo pom en mi repositorio de instantáneas en Maven?
¿Por qué?
Tenemos varios desarrolladores que trabajan en varios proyectos de Maven. Tenemos un servidor Hudson con un trabajo por proyecto y versión de Maven (por ejemplo, foo-1.2, foo-1.3). Cada trabajo crea el proyecto y lo implementa en un servidor Nexus (en caso de éxito). Los proyectos de Maven en desarrollo están marcados como tales mediante el uso de -SNAPSHOT postfix en la versión. Por ejemplo: 1.2-SNAPSHOT, 1.3-SNAPSHOT.
A continuación, se incluye un ejemplo de cómo un trabajo de desarrollador está dañado debido a esta arquitectura.
Asuma dos proyectos Maven: foo-core y foo-webapp, ambos en la versión 1.2-SNAPSHOT.
- El desarrollador A está trabajando en foo-core, realizó varios cambios y lo compiló.
- El desarrollador A continúa trabajando, pero en foo-webapp.
- El desarrollador B comenzó a trabajar y cambió foo-core. Compromete su trabajo y lo empuja al SCM.
- Hudson es activado por SCM; Crea foo-core y lo implementa en el repositorio de instantáneas en Nexus.
- El desarrollador A ejecuta
mvn install
en foo-webapp. Maven está consultando con Nexus, y descubre que hay una versión más nueva de foo-core en Nexus. Lo descarga (rellenado con cambios del desarrollador B) y falla la compilación, ya que los cambios realizados por el desarrollador A no están en el contenedor ubicado en el repositorio local. La descarga anula el archivo instalado allí por el desarrollador A.
soluciones existentes
Miré en experto de implementar-plugin, pero este plugin despliega todos los artefactos asociados al proyecto. Si tuvieran una forma de configurar qué artefactos desplegar, hubiera sido genial.
¿Hay alguna manera de resolver esto sin recurrir a la escritura de mi propio complemento de implementación, basado en maven-deploy-plugin?
Gracias,
Asaf
He editado mi pregunta, y añadió la motivación de la solicitud para aclarar mi pregunta mejor. –
Estoy de acuerdo con @FrVaBe, y no creo que lo que pida puede hacerse, ni tampoco creo que sea la mejor solución para su situación de todos modos. Los indicadores '-nsu' y' -o' (fuera de línea) serían útiles para el Desarrollador A para evitar el problema. Sin embargo, si el Desarrollador A está creando el código desde el nivel superior de un proyecto de varios módulos, no debería ser necesario, ya que su versión local de foo-core tendrá prioridad sobre la nueva implementada por Hudson. Por último, de forma predeterminada, Maven busca actualizaciones instantáneas solo una vez cada 24 horas, por lo que esta situación ocurriría a lo sumo una vez al día por entorno. – ctrueden