2012-02-29 20 views
91

Ho un POM genitore in un progetto Maven, con questa struttura:Installare POM genitore senza costruire moduli Bambino

   parent 
       | 
     --------------- 
     |    | 
     child1  child2 

voglio installare il POM del "genitore"nel repository locale per consentire child1 prendere alcune modifiche che ho fatto in dependencyManagement, ma Non riesco a fare una normale "installazione pulita" perché "child2" è danneggiato e non verrà generato.

Quale è il modo corretto di farlo con Maven (oltre che andare al padre padre e commentare il modulo "child2").

risposta

136

Utilizzare l'opzione '-N' nel comando mvn.

Da mvn -h:

-N, - non ricorsiva Non ricorsione in sottoprogetti

+1

L'opzione '-N' o '--non-ricorsiva' significa che non si ricorre nei sottoprogetti. –

25

Mentre Guillaume è davvero giusto e che è l'opzione giusta, io personalmente consiglierei mantenere il genitore come un modulo separato.

Trovo l'approccio migliore per l'eredità di essere come segue:

aggregator 
|- module1/ (extends parent) 
| |- pom.xml 
|- module2/ (extends parent) 
| |- pom.xml 
|- parent/ 
| |- pom.xml 
|- pom.xml 

In questo modo è sempre possibile installare solo il genitore, con mvn clean install senza opzioni aggiuntive.

È anche possibile avere il genitore all'esterno dell'aggregatore in modo da poterlo riutilizzare tra più progetti.

Ci sono numerosi vantaggi nel mantenere il genitore e l'aggregatore come due cose separate. Ma alla fine, scegli cosa è meglio per il tuo progetto/ambiente.

+0

Ho lottato con questo problema per ore, e ho scoperto che alcuni progetti stanno facendo in questo modo, come apache sling, JackRabbit e Artifactory. – accuya

+0

Ha isolato l'ereditarietà del modulo Maven (dipendenze, proprietà ecc.) Dalla compilazione di lotti (moduli secondari). –

+3

È considerata una buona pratica? Qualche blog o altro su questo approccio? – ArtB

Problemi correlati