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.

È stato utile?

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

alt text http: // www .sonatype.com / libri / Maven-book / di riferimento / fichi / web / running_aro-dependencies.png

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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top