2009-10-23 20 views
8

E 'possibile fare?Costruisci modulo singolo da multimodule pom

Ambiente: multimodule pom è costituito da 3 moduli: mm1, mm2, mm3. Il modulo mm2 ha mm1 come dipendenza. È possibile costruire il padre genitore senza errori.

La domanda: è possibile creare un singolo modulo mm2 (cioè eseguire maven dalla directory di base mm2) senza installare mm1 nel repository locale?

Grazie.

+0

Sei Rodolphe? Hai libero? : D –

+0

Scusa, cosa? :) – igorp1024

risposta

3

Senza installazione automatica no, ma è possibile costruire solo progetti scelti. Devi avere una build multi modulo (suppongo che tu lo faccia). Nella modalità reattore è necessario eseguire ogni comando dalla radice del reattore.

Quindi nel tuo caso:

mvn reactor:make -Dmake.folders=mm2

In questo caso si costruisce modulo mm2 ed i moduli da cui dipende (MM1).

Link utili:

Da esempi di libri che costruisco unico progetto persistono e il suo modello di progetto dipendenza.Altri progetti sono incontaminata, con mvn reactor:make -Dmake.folders=sample-persist

alt text http://www.sonatype.com/books/maven-book/reference/figs/web/running_aro-dependencies.png

altro comando utile è reactor:make-dependents cui costruire progetti che dipendono da X.

0

Questo va contro il principio di dipendenza di Maven2. Qual è l'interesse di farlo esattamente?

Tuttavia, possiamo immaginare di definire la dipendenza MM1 di mm2 come dipendenza system:

<dependency> 
    <groupId>...</groupId> 
    <artifactId>mm1</artifactId> 
    <version>...</version> 
    <scope>system</scope> 
    <systemPath>../mm1/target/</systemPath> 
</dependency> 
+0

Questo mi fa sanguinare gli occhi :) –

14

Non sono sicuro di cosa si intende esattamente per "senza installare MM1 in repository locale". Vuoi dire in precedenza per costruire mm2 o mai?

Nel dubbio, forse una delle nuove opzioni di generazione annunciate nel post Maven Tips and Tricks: Advanced Reactor Options blog può aiutare:

A partire dalla release 2.1 Maven, ci sono nuovi opzioni della riga di comando Maven, che permettono di manipolare il modo in cui Maven realizzerà progetti multimodule . Queste nuove opzioni sono:

-rf, --resume-from 
     Resume reactor from specified project 
-pl, --projects 
     Build specified reactor projects instead of all projects 
-am, --also-make 
     If project list is specified, also build projects required by the list 
-amd, --also-make-dependents 
     If project list is specified, also build projects that depend on projects on the list 

Stavo pensando specificamente alle opzioni -pl e -am. Per costruire un sottoinsieme dei moduli, eseguire il seguente dalla directory principale

$ mvn --projects mm2 --also-make install 

Tuttavia, non sono sicuro che questo risponde alla tua domanda (che non è del tutto chiaro per me).

+0

+1 Ora vedo che non ho letto attentamente il tuo post e ho scritto quasi la stessa risposta. – cetnar

Problemi correlati