Costruisci un singolo modulo da pom multimodulo
-
06-07-2019 - |
Domanda
È possibile farlo?
L'ambiente: il multimodulo è composto da 3 moduli: mm1, mm2, mm3. Il modulo mm2 ha mm1 come dipendenza. È possibile creare il pom padre senza errori.
La domanda: è possibile costruire un singolo modulo mm2 (ovvero eseguire maven dalla directory base mm2) senza installare mm1 nel repository locale?
Grazie.
Soluzione
Senza installazione automatica no, ma è possibile costruire solo progetti scelti. Devi avere un modulo multiplo (suppongo tu lo faccia). In modalità reattore ogni comando deve essere eseguito dalla radice del reattore .
Quindi nel tuo caso:
reattore mvn: make -Dmake.folders = mm2
In questo caso costruisci il modulo mm2 e i moduli da cui dipende (mm1).
Link utili:
Dagli esempi di libri ho creato solo il progetto persistere e il suo modello di progetto di dipendenza. Altri progetti non sono stati toccati
reattore mvn: make -Dmake.folders = sample-persist
Altro comando utile è reattore: make-dependents
che costruiscono progetti che dipendono da X.
Altri suggerimenti
Non sono sicuro di cosa intendi esattamente per " senza installare mm1 nel repository locale " ;. Intendi in precedenza per costruire mm2 o mai?
In dubbio, forse una delle nuove opzioni di build annunciate nella Suggerimenti e trucchi per Maven: Opzioni avanzate del reattore il post sul blog può aiutarti:
A partire dalla versione Maven 2.1, ci sono nuove linee di comando Maven opzioni che ti consentono di manipolare il modo in cui Maven costruirà progetti multimodulo. Questi nuovi le 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 creare un sottoinsieme dei moduli, eseguire quanto segue dalla directory principale
$ mvn --projects mm2 --also-make install
Tuttavia, non sono sicuro che questo risponda alla tua domanda (il che non è del tutto chiaro per me).
Questo va contro il principio delle dipendenze 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>