2011-11-05 13 views
8
  • lascia supporre la mia domanda ha bisogno foo.jar e bar.jar
  • foo.jar ha bisogno la versione 1.0 di c.jar
  • bar.jar ha bisogno la versione 2.0 di c.jar

In che modo Maven risolve questo conflitto? Quale versione di c.jar verrà utilizzata?Maven - dipendenze transitive con diverse versioni

risposta

13

Dipende dall'ordine di dichiarazione nel POM effettivo. Se appare foo.jar per primo, otterrai la versione 1.0 di c.jar. Se invece bar.jar viene dichiarato per primo, sarà la versione 2.0 di c.jar.

Rilevante documentation:

... due versioni di dipendenza sono alla stessa profondità nell'albero delle dipendenze , fino Maven 2.0.8 non è stato definito quale sarebbe vincere, ma dal momento che Maven 2.0. 9 è l'ordine nella dichiarazione che conta: la prima dichiarazione vince

1

Utilizzerà 2.0. (eccetto il 1 aprile, quando userà 3.0). Si noti che, per stringhe di versione più complesse, la funzione di confronto non è semplicemente lessicale.