2013-09-05 17 views
8

Ho un progetto padre Maven che ha più figlio/moduli ... Ho il seguente pom.xml per il principale/genitore;Ordine di costruzione Maven (moduli multipli)

<modules> 
     <module>Main-Ear</module> 
     <module>Sub-Web</module> 
     <module>Sub-Ui</module> 
     <module>Sub-Services</module> 
     <module>Sub-SSO-Login</module> 
    </modules> 

Tuttavia, ritengo che l'ordine di generazione attuale di essere diverso ... dopo la generazione, l'ordine attuale assomiglia;

Main 
Sub-Services 
Sub-SSO-Login 
Sub-UI 
Sub-Web 
Main-Ear 

Dove fa esattamente Maven prende l'ordine di generazione da in questo caso?

risposta

5

Maven non preso l'ordine di costruzione del modulo da quello che definiamo nel principale pom.xml. Maven decide l'ordine considerando le dipendenze dei moduli tra loro.

Nel tuo caso sicuramente Main-Ear dovrebbe essere fatto ultimo.

Consideriamo l'esempio seguente.

Ho il modulo A, B e C. Il modulo A ha una dipendenza dal modulo C e B mentre il modulo C ha una dipendenza dal modulo B. Poi ordine maven edificio sarà

B 
C 
A 
+1

Così, u stanno dicendo non ci sarebbe alcuna dichiarazione esplicita in qualsiasi parte pom. xml ... ma Maven prende la decisione da sola..basato sulle dipendenze .... – testndtv

+0

@testndtv Sì. Penso che (ma non sono sicuro) potrebbe dipendere dall'ordine che si dichiara, se due sottomoduli non hanno alcuna dipendenza tra loro. per esempio.A -> C e B -> C, quindi Maven può usare l'ordine di dichiarazione per determinare quale di A o B è costruito per primo –

+1

@AdrianShum Se non ci sono dipendenze tra loro, allora Maven userà l'ordine che definiamo –

9

Non è possibile controllare manualmente l'ordine di generazione:

Da Maven documentazione di progetto (Guide to Working with Multiple Modules):

Reactor Ordinamento

Perché i moduli all'interno di una build multi-modulo possono dipendere l'uno dall'altro, è impor tant'è che il reattore ordina tutti i progetti in modo che garantisca che qualsiasi progetto sia costruito prima che sia necessario.

le seguenti relazioni sono onorati durante l'ordinamento progetti:

  • una dipendenza progetto su un altro modulo nella build
  • una dichiarazione plug-in cui il plugin è un altro dei moduli nella build
  • una dipendenza plugin su un altro modulo nella build
  • una dichiarazione estensione di build su un altro modulo nella build l'ordine dichiarato nell'elemento (se non si applica un'altra regola)

Nota che solo sono utilizzati i riferimenti "istanziati" - dependencyManagement e pluginManagement elementi non causerà un modifica dell'ordine reattore sorta

Problemi correlati