Tengo una configuración maven tradicional con proyecto principal y una serie de módulos, que son subproyectos. Cuando hago mvn deploy
, ejecuta el ciclo de vida completo (incluyendo test
) hasta deploy
para cada proyecto en secuencia (primero en profundidad). Me gustaría evitar implementar cualquier subproyecto si alguno de los proyectos falla en la construcción. En otras palabras, me gustaría que el deploy
del proyecto principal sea "todo o nada". ¿Hay alguna forma de lograr esto?Hacer que el proyecto matriz maven pruebe todos los módulos antes de implementar cualquiera de ellos
Hacer que el proyecto matriz maven pruebe todos los módulos antes de implementar cualquiera de ellos
Respuesta
Si su repositorio remoto es un Pro ejemplo Sonatype Nexus, entonces la instalación de "puesta en escena" de Nexus Pro permitirá la publicación atómica para el buen repositorio.
Si está utilizando Jenkins, hay un plugin demora en el despliegue que va a desplegar todos sus artefactos como posterior a la generación (o muy posterior a la generación) acción (no le importa demasiado qué administrador de repositorio que use)
por último, uno de mis objetivos de mediano a largo plazo para el MRM-experto-plugin @ Codehaus es permitir la estadificación local del despliegue de modo que usted será capaz de hacer algo como
mvn mrm:catch-deploy deploy mrm:push-deploy
PERO que ¡el último no está escrito todavía!
Maven en sí no puede hacer esto (todavía). Actualmente, el proceso de compilación ejecuta todos los objetivos en cada módulo individualmente. Hay planes para permitir que los objetivos para ver la imagen grande, pero eso es probablemente por Maven 4.
Por el momento, se puede utilizar un pequeño script de shell:
mvn clean install && mvn deploy -DskipTests=true
La primera carrera se basa todo. La segunda ejecución no hará mucho (todo el código ya está compilado y las pruebas largas se saltan), así que es bastante rápido.
En realidad, prefiero este enfoque porque mi script también reemplaza cualquier elemento distributionManagement
existente con los de la memoria caché de mi empresa. Esto significa que puedo implementar cualquier proyecto para mi empresa sin necesidad de realizar ningún cambio en el POM original. Aquí está la secuencia de comandos:
#!/bin/bash
if [[ ! -e pom.xml ]]; then
echo "Missing pom.xml" 1>&2
exit 1
fi
sed \
-e '/<distributionManagement>/,/<\/distributionManagement>/d' \
-e '/<\/project/d' \
pom.xml > pom-deploy.xml || exit 1
cat >> pom-deploy.xml <<EOF
<!-- ADDED BY $0 -->
<distributionManagement>
... whatever you need ...
</distributionManagement>
</project>
EOF
mvn -f pom-deploy.xml clean install && \
mvn -f pom-deploy.xml deploy -DskipTests=true && \
rm pom-deploy.xml
exit 0
- 1. Maven proyecto de varios módulos y Jenkins
- 2. cobertura en el proyecto de varios módulos de maven
- 3. Proyecto de varios módulos de Maven: cómo ejecutar una operación después de que todos los submódulos hayan terminado
- 4. ¿Cómo generar un gráfico de la dependencia entre todos los módulos de un proyecto Maven?
- 5. Recursos de copia de Maven en proyecto de varios módulos
- 6. Composición del proyecto de varios módulos de Maven con respecto a las dependencias que comparten
- 7. Ignora un módulo durante la construcción de prueba maven para el proyecto maven de varios módulos
- 8. Lanzamiento de un proyecto maven de varios módulos con Git
- 9. update location scm url for maven proyecto de varios módulos
- 10. Dependencia de prueba de Maven en proyecto de varios módulos
- 11. proyecto y embarcadero de múltiples módulos Maven: ejecutar
- 12. JavaRebel con un proyecto empresarial de múltiples módulos en Maven
- 13. No se construyen los módulos hijos Maven
- 14. Cómo hacer que absolute_import sea el valor predeterminado en todos los módulos
- 15. ¿Cómo puedo hacer que mis subproyectos hereden versiones de dependencia del superproyecto en un proyecto Maven de varios módulos?
- 16. Maven: Cómo usar embarcadero: ejecutar en un proyecto Maven de varios módulos, sin necesidad de instalar
- 17. módulos tejer maven AspectJ
- 18. Importar todos los módulos en un directorio
- 19. ¿Cómo hacer que maven agote el tiempo de espera antes de descargar dependencias?
- 20. proyecto maven de varios módulos con el diseño padre pom y svn
- 21. Módulos Maven opcionales en pom.xml
- 22. require.js: Acceda a todos los módulos cargados
- 23. Cómo utilizar el archivo maestro pom para verificar todos los módulos de una aplicación web y compilar todos los módulos
- 24. Complemento de cobertura de Maven: un informe para el proyecto de varios módulos
- 25. Proyecto Maven2 de varios módulos con WTP
- 26. Hacer que la unidad Symfony2 pruebe más DRY ampliando WebTestCase
- 27. En Maven, ¿cómo construyo los módulos, pero no el proyecto del agregador?
- 28. Maven - ¿Cómo construir varios proyectos Maven independiente de un proyecto
- 29. Cómo empaquetar proyectos maven de múltiples módulos con módulos anidados
- 30. Cómo configurar slf4j + logback en un proyecto Maven de varios módulos?
Estoy cambiando la respuesta aceptada a esta porque creo que es correcto sugerir el uso de un servidor de CI para esto en lugar de maven, ese es el enfoque que voy a tomar. – Ramon
Stephen, ¿a qué plugin de Jenkins se refiere para el despliegue retrasado? –
No hace referencia a ningún complemento específico –