2013-11-25 13 views
37

Ho la versione 2.5 di servlet-api come scope in pom.xml. Qui fa parte della dipendenza: l'output dell'albero del mio progetto. Cosa significa "versione gestita da 2.3, scope gestito da compilare"?Come leggo un albero di dipendenza Maven

[INFO] +- commons-logging:commons-logging:jar:1.1:compile 
[INFO] | \- javax.servlet:servlet-api:jar:2.5:provided (version managed from 2.3; scope managed from compile) 

Questo significa che v'è una certa dipendenza transitiva sulla versione 2.3 sul mio classpath? Il mio file WAR non ha affatto il vaso servlet-api, ma io uso la vecchia versione di Spring 2.5.4. Sospetto che il framework Spring dipenda da servlet-ap 2.3.

risposta

32

Il messaggio significa in sostanza che lo version di servlet-API sarebbe stato in transito 2.3 (quindi in pratica nel pom di commons-logging definiscono servlet-api con la versione 2.3), ma quella versione 2.5 è stata specificatamente richiesta nel progetto, così è quello che è stato usato.

Lo stesso vale per l'ambito. Nei comandi comuni di logging è definito con scope compile, ma è definito con scope provided, quindi di nuovo è l'ambito utilizzato.

+1

Tranne nel mio caso (spring-data-mongodb) non riesco a trovare dove ho sovrascritto la versione gestita. – OrangeDog

+0

@OrangeDog Ho riscontrato un problema simile. Ho trovato che la versione precedente di httpclient proveniva da pom spring-boot-starter-gen. – chalimartines

+0

Nota che possono essere sovrascritti "in un padre" pom, quindi assicurati di ricontrollare anche lì ... – rogerdpack

4

Significa che il progetto ha annullato il version e scope da altre dipendenze.

Problemi correlati