2010-03-24 11 views
17

Vorrei suddividere alcune fasi del ciclo di vita in sottofasi. Vorrei controllare il flusso di esecuzione da una sottofase all'altra, un po 'come con le dipendenze di formiche.Come posso eseguire diversi plugin Maven in una singola fase e impostare il rispettivo ordine di esecuzione?

Ad esempio, mi piacerebbe utilizzare il plug-in NSIS per impacchettare il mio progetto in un programma di installazione in fase di pacchetto, DOPO che il mio progetto è stato inserito in un file di guerra. Mi piacerebbe fare tutto ciò nella fase del pacchetto.

È possibile?

Grazie

+0

Vuol non Maven eseguire gli obiettivi di plugin legati alla stessa fase del ciclo di vita nell'ordine in cui sono elencati nella POM? Solo un'ipotesi, potrebbe valere la pena di testare ... –

+0

Non so ... Ci provo io – Yaneeve

risposta

13

plugin legati alla stessa fase dovrebbe essere eseguito nello stesso ordine in cui sono elencati nella POM. In determinate circostanze (ad esempio se si associa lo stesso plug-in a una fase due volte, come il plug-in di antrun), ciò potrebbe non verificarsi ma si tratta di un bug (vedere MNG-2258 e il relativo problema MNG-3719).

+0

ma cosa succede se li specifichi in blocchi non correlati, come il normale blocco di build rispetto a un blocco di build che è parte di un blocco di profilo? Potrebbero esserci alcuni plugin nel blocco del profilo che dovrebbero essere eseguiti dopo quelli nel blocco dei plugin, ma altri potrebbero non farlo. – Matthias

+9

Questo non accade (almeno in Maven 3.0.4). Ho due plugin con le esecuzioni legate a generate-sources, uno elencato per primo nell'elenco di circa 6 plugin e l'altro elencato per ultimo. Tuttavia, quello elencato per ultimo (che dipende da quello elencato per primo) viene sempre eseguito per primo. – matt5784

+0

D'accordo con matt5784, questo è fastidioso :( –

6

Ho avuto lo stesso problema. guarda allo How to perform ordered tasks in Maven2 build. per qualche motivo i diversi obiettivi legati a una fase sono memorizzati in una mappa hash o altra struttura non ordinata che rende casuale l'ordine di esecuzione. la mia soluzione era quella di distribuire i compiti in diverse fasi, ma non credo ci sia molto senso nel tuo caso (la confezione di nsis non è un test di integrazione preliminare). si potrebbe fare uno dei seguenti modi:

1) tentare la fortuna e vedere se Maven chosses l'ordine giusto per te (probabilmente provato che già)

2) utilizzare il plug-alone - eseguire l'obiettivo al di fuori del ciclo vitale. qualcosa come: pacchetto mvn org.codehaus.mojo: nsis-maven-plugin: 1.0: compile.

3) separarli in modulo: disporre di un pom padre contenente due sottomoduli, uno - il progetto di guerra e l'altro per il progetto nsis.

4) utilizzare un ciclo di vita personalizzato cambiando il tipo, nel tuo caso puoi usare "exe". questo viene fatto usando un'estensione plugin personalizzata (guide to using extension)

5) utilizzare lo jetspeed-mvn-maven-plugin. Non l'ho mai usato ma sembra pertinente alle tue esigenze.

spero che questo ti dia nuove idee.

Ronen

+0

Grazie, ma ad eccezione di alcuni "nodi" con il ciclo di vita predefinito @Pascal è giusto – Yaneeve

+1

quelli non sono "nodi". in realtà se chiedi ai ragazzi di Maven ti diranno che il numero 3 è in accordo con il "modo Maven" che è la separazione dei moduli e quando ci pensi, ha molto senso creare un'applicazione web e un progetto di installazione sono due cose separate. – rperez

Problemi correlati