2010-03-24 10 views
17

Me gustaría dividir ciertas fases en el ciclo de vida del maven en subfases. Me gustaría controlar el flujo de ejecución de una subfase a otra, algo así como con las dependencias de las hormigas.¿Cómo puedo ejecutar varios plugins maven dentro de una sola fase y establecer su respectivo orden de ejecución?

Por ejemplo, me gustaría usar el complemento NSIS para empaquetar mi proyecto en un instalador en la etapa de paquete, DESPUÉS de que mi proyecto haya sido empacado en un archivo war. Me gustaría hacer todo eso en la fase del paquete.

¿Es esto posible?

Gracias

+0

¿No Maven ejecutar los objetivos de plugin con destino a la misma fase del ciclo de vida en el orden en que aparecen en el POM? Solo una conjetura, puede valer la pena probar ... –

+0

No sé ... Lo intentaré – Yaneeve

Respuesta

13

Plugins unidos a la misma fase debe ser ejecutados en el mismo orden en que se enumeran en el POM. En determinadas circunstancias (por ejemplo, si enlaza el mismo complemento a una fase dos veces, como el complemento antrun), puede que esto no ocurra, pero se trata de un error (consulte MNG-2258 y el número relacionado MNG-3719).

+0

, pero qué pasa si los especifica en bloques no relacionados, como el bloque de compilación normal frente a un bloque de compilación que es parte de un bloque de perfil? Puede haber algunos complementos en el bloque de perfil que deberían ejecutarse después de aquellos en el bloque de complementos, pero otros pueden no. – Matthias

+9

Esto no sucede (al menos en maven 3.0.4). Tengo dos complementos con ejecuciones vinculadas a generate-sources, una lista primero en la lista de aproximadamente 6 complementos y la otra listada en último lugar. Sin embargo, el último (que depende del que se muestra primero) se ejecuta primero. – matt5784

+0

De acuerdo con matt5784, esto es molesto :( –

6

Tuve el mismo problema. mira How to perform ordered tasks in Maven2 build. por alguna razón, los diferentes objetivos vinculados a una fase se almacenan en un mapa hash u otra estructura desordenada que hace que el orden de ejecución sea aleatorio. mi solución fue distribuir las tareas en diferentes fases, pero no creo que haya mucho sentido en su caso (el paquete de nsis no es una prueba de integración previa). que podría hacer uno de los siguientes:

1) probar suerte y ver si Maven chosses el orden correcto para usted (que probablemente ha intentado que ya)

2) usar plug-in independiente - ejecutar la meta fuera de la ciclo vital. algo así como: paquete mvn org.codehaus.mojo: nsis-maven-plugin: 1.0: compilar.

3) sepárelos en el módulo: tenga un pom padre que contenga dos submódulos, uno - su proyecto de guerra y el otro para el proyecto nsis.

4) utilice un ciclo de vida personalizado al cambiar el tipo, en su caso puede usar "exe". esto se hace mediante el uso de una extensión de complemento personalizado (guide to using extension)

5) utilice el jetspeed-mvn-maven-plugin. Nunca lo he usado, pero parece relevante para tus necesidades.

Espero que esto le brinde nuevas ideas.

Ronen

+0

Gracias, pero a excepción de algunos "problemas" con el ciclo de vida predeterminado @Pascal es correcto – Yaneeve

+1

esos no son "pliegues". en realidad, si le preguntas a los chicos de Maven, te dirán que el número 3 es el que mejor se ajusta al "modo Maven" que es la separación de los módulos y cuando lo piensas, tiene mucho sentido crear una aplicación web y un proyecto de instalador son dos cosas separadas. – rperez

Cuestiones relacionadas