Schreibt man ein Programm, dass mehrere Frameworks benutzt, kann es vorkommen, dass diese Bibliotheken verschiedener Versionen benutzen, die nicht zueinander kompatibel sind. Eine typische Fehlermeldung, die auf diesen Fakt hinweist, ist z.B. ein java.lang.NoSuchMethodError. Diese begegnet mir z.b. ständig, wenn verschiedene Versionen von commons-collections benutzt werden.
Mit dem Befehl
mvn dependency:tree -Dverbose -Dincludes=commons-collections
listete Maven einen Baum von Abhängigkeiten zu z.B. commons-collections auf.
Eine Ausgabe dieses Befehls schaut z.B. so aus:
[INFO] ------------------------------------------------------------------------
[INFO] Building sPi_ObjectModel_Hibernate_Implementation
[INFO] task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
[INFO] [dependency:tree]
[INFO] fem.spi:spi-om-hibernate-impl:jar:1.0.0-SNAPSHOT
[INFO] +- commons-collections:commons-collections:jar:2.1.1:compile
[INFO] \- org.hibernate:hibernate:jar:3.2.6.ga:compile
[INFO] +- net.sf.ehcache:ehcache:jar:1.2.3:compile
[INFO] | \- (commons-collections:commons-collections:jar:2.1:compile - omitted for conflict with 2.1.1)
[INFO] \- (commons-collections:commons-collections:jar:2.1.1:compile - omitted for duplicate)
[INFO] ------------------------------------------------------------------------
[INFO] Building sPi_Webapp
[INFO] task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
[INFO] [dependency:tree]
[INFO] fem.spi:spi-webapp:war:1.0.0-SNAPSHOT
[INFO] +- fem.spi:spi-om-hibernate-impl:jar:1.0.0-SNAPSHOT:compile
[INFO] | +- commons-collections:commons-collections:jar:2.1.1:compile
[INFO] | \- org.hibernate:hibernate:jar:3.2.6.ga:compile
[INFO] | +- net.sf.ehcache:ehcache:jar:1.2.3:compile
[INFO] | | \- (commons-collections:commons-collections:jar:2.1:compile - omitted for conflict with 2.1.1)
[INFO] | \- (commons-collections:commons-collections:jar:2.1.1:compile - omitted for duplicate)
[INFO] \- org.apache.cocoon:cocoon-servlet-service-components:jar:1.0.0:compile
[INFO] +- org.apache.cocoon:cocoon-sitemap-impl:jar:1.0.0:compile
[INFO] | +- org.apache.cocoon:cocoon-sitemap-api:jar:1.0.0:compile
[INFO] | | \- (commons-collections:commons-collections:jar:3.2:compile - omitted for conflict with 2.1.1)
[INFO] | +- org.apache.cocoon:cocoon-expression-language-impl:jar:1.0.0:compile
[INFO] | | \- (commons-collections:commons-collections:jar:3.2:compile - omitted for conflict with 2.1.1)
[INFO] | +- org.apache.cocoon:cocoon-pipeline-impl:jar:1.0.0:compile
[INFO] | | \- (commons-collections:commons-collections:jar:3.2:compile - omitted for conflict with 2.1.1)
[INFO] | +- org.apache.cocoon:cocoon-expression-language-api:jar:1.0.0:compile
[INFO] | | \- (commons-collections:commons-collections:jar:3.2:compile - omitted for conflict with 2.1.1)
[INFO] | +- (commons-collections:commons-collections:jar:3.2:compile - omitted for conflict with 2.1.1)
[INFO] | \- commons-jxpath:commons-jxpath:jar:1.2:compile
[INFO] | \- (commons-collections:commons-collections:jar:2.0:compile - omitted for conflict with 2.1.1)
[INFO] \- org.apache.cocoon:cocoon-servlet-service-impl:jar:1.0.0:compile
[INFO] \- (commons-collections:commons-collections:jar:3.2:compile - omitted for conflict with 2.1.1)