Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to understand Maven dependency tree

Please excuse if this a dump question but I have searched a lot and couldn't understand how to actually read Maven Dependency tee. I know this command is used to figure out the dependencies but how? This is the result of mvn dependency:tree -Dverbose in my project.

[INFO] +- org.springframework:spring-core:jar:4.0.2.RELEASE:compile [INFO] |  \- commons-logging:commons-logging:jar:1.1.3:compile [INFO] +- org.springframework:spring-web:jar:4.0.2.RELEASE:compile [INFO] |  +- (org.springframework:spring-aop:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] |  +- org.springframework:spring-beans:jar:4.0.2.RELEASE:compile [INFO] |  |  \- (org.springframework:spring-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] |  +- (org.springframework:spring-context:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] |  \- (org.springframework:spring-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] +- org.springframework:spring-webmvc:jar:4.0.2.RELEASE:compile [INFO] |  +- (org.springframework:spring-beans:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] |  +- (org.springframework:spring-context:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] |  +- (org.springframework:spring-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] |  +- org.springframework:spring-expression:jar:4.0.2.RELEASE:compile [INFO] |  |  \- (org.springframework:spring-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] |  \- (org.springframework:spring-web:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] +- org.springframework:spring-context:jar:4.0.2.RELEASE:compile [INFO] |  +- (org.springframework:spring-aop:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] |  +- (org.springframework:spring-beans:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] |  +- (org.springframework:spring-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] |  \- (org.springframework:spring-expression:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] +- org.springframework:spring-aop:jar:3.0.0.RC3:compile [INFO] |  +- aopalliance:aopalliance:jar:1.0:compile [INFO] |  +- org.springframework:spring-asm:jar:3.0.0.RC3:compile [INFO] |  +- (org.springframework:spring-beans:jar:3.0.0.RC3:compile - omitted for conflict with 4.0.2.RELEASE) [INFO] |  \- (org.springframework:spring-core:jar:3.0.0.RC3:compile - omitted for conflict with 4.0.2.RELEASE) [INFO] +- org.springframework:spring-tx:jar:4.0.2.RELEASE:compile [INFO] |  +- (org.springframework:spring-beans:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] |  \- (org.springframework:spring-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] +- org.springframework:spring-orm:jar:4.0.2.RELEASE:compile [INFO] |  +- (org.springframework:spring-beans:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] |  +- (org.springframework:spring-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] |  +- org.springframework:spring-jdbc:jar:4.0.2.RELEASE:compile [INFO] |  |  +- (org.springframework:spring-beans:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] |  |  +- (org.springframework:spring-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] |  |  \- (org.springframework:spring-tx:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] |  \- (org.springframework:spring-tx:jar:4.0.2.RELEASE:compile - omitted for duplicate) [INFO] +- org.springframework.security:spring-security-core:jar:3.2.2.RELEASE:compile [INFO] |  +- (aopalliance:aopalliance:jar:1.0:compile - omitted for duplicate) [INFO] |  +- (org.springframework:spring-aop:jar:3.2.8.RELEASE:compile - omitted for conflict with 3.0.0.RC3) [INFO] |  +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.2.RELEASE) [INFO] |  +- (org.springframework:spring-context:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.2.RELEASE) [INFO] |  +- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.2.RELEASE) [INFO] |  \- (org.springframework:spring-expression:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.2.RELEASE) [INFO] +- org.springframework.security:spring-security-web:jar:3.2.2.RELEASE:compile [INFO] |  +- (aopalliance:aopalliance:jar:1.0:compile - omitted for duplicate) [INFO] |  +- (org.springframework.security:spring-security-core:jar:3.2.2.RELEASE:compile - omitted for duplicate) [INFO] |  +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.2.RELEASE) [INFO] |  +- (org.springframework:spring-context:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.2.RELEASE) [INFO] |  +- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.2.RELEASE) [INFO] |  +- (org.springframework:spring-expression:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.2.RELEASE) [INFO] |  \- (org.springframework:spring-web:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.2.RELEASE) [INFO] +- org.springframework.security:spring-security-config:jar:3.2.2.RELEASE:compile [INFO] |  +- (aopalliance:aopalliance:jar:1.0:compile - omitted for duplicate) [INFO] |  +- (org.springframework.security:spring-security-core:jar:3.2.2.RELEASE:compile - omitted for duplicate) [INFO] |  +- (org.springframework:spring-aop:jar:3.2.8.RELEASE:compile - omitted for conflict with 3.0.0.RC3) [INFO] |  +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.2.RELEASE) [INFO] |  +- (org.springframework:spring-context:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.2.RELEASE) [INFO] |  \- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.2.RELEASE) [INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:compile [INFO] +- org.glassfish.jersey.core:jersey-server:jar:2.6:compile [INFO] |  +- org.glassfish.jersey.core:jersey-common:jar:2.6:compile [INFO] |  |  +- (javax.ws.rs:javax.ws.rs-api:jar:2.0:compile - omitted for duplicate) [INFO] |  |  +- (javax.annotation:javax.annotation-api:jar:1.2:compile - omitted for duplicate) [INFO] |  |  +- org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.6:compile [INFO] |  |  +- (org.glassfish.hk2:hk2-api:jar:2.2.0:compile - omitted for duplicate) [INFO] |  |  +- (org.glassfish.hk2.external:javax.inject:jar:2.2.0:compile - omitted for duplicate) [INFO] |  |  +- (org.glassfish.hk2:hk2-locator:jar:2.2.0:compile - omitted for duplicate) [INFO] |  |  \- org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile [INFO] |  +- org.glassfish.jersey.core:jersey-client:jar:2.6:compile [INFO] |  |  +- (org.glassfish.jersey.core:jersey-common:jar:2.6:compile - omitted for duplicate) [INFO] |  |  +- (javax.ws.rs:javax.ws.rs-api:jar:2.0:compile - omitted for duplicate) [INFO] |  |  +- (org.glassfish.hk2:hk2-api:jar:2.2.0:compile - omitted for duplicate) [INFO] |  |  +- (org.glassfish.hk2.external:javax.inject:jar:2.2.0:compile - omitted for duplicate) [INFO] |  |  \- (org.glassfish.hk2:hk2-locator:jar:2.2.0:compile - omitted for duplicate) [INFO] |  +- javax.ws.rs:javax.ws.rs-api:jar:2.0:compile [INFO] |  +- javax.annotation:javax.annotation-api:jar:1.2:compile [INFO] |  +- org.glassfish.hk2:hk2-api:jar:2.2.0:compile [INFO] |  |  +- org.glassfish.hk2:hk2-utils:jar:2.2.0:compile [INFO] |  |  \- org.glassfish.hk2.external:aopalliance-repackaged:jar:2.2.0:compile [INFO] |  +- org.glassfish.hk2.external:javax.inject:jar:2.2.0:compile [INFO] |  +- org.glassfish.hk2:hk2-locator:jar:2.2.0:compile [INFO] |  |  +- (org.glassfish.hk2.external:javax.inject:jar:2.2.0:compile - omitted for duplicate) [INFO] |  |  +- (org.glassfish.hk2.external:aopalliance-repackaged:jar:2.2.0:compile - omitted for duplicate) [INFO] |  |  +- (org.glassfish.hk2:hk2-api:jar:2.2.0:compile - omitted for duplicate) [INFO] |  |  +- (org.glassfish.hk2:hk2-utils:jar:2.2.0:compile - omitted for duplicate) [INFO] |  |  \- (org.javassist:javassist:jar:3.18.1-GA:compile - omitted for conflict with 3.15.0-GA) [INFO] |  \- javax.validation:validation-api:jar:1.1.0.Final:compile [INFO] +- com.sun.jersey.contribs:jersey-spring:jar:1.18.1:compile [INFO] |  +- com.sun.jersey:jersey-servlet:jar:1.18.1:compile [INFO] |  |  \- com.sun.jersey:jersey-server:jar:1.18.1:compile [INFO] |  |     \- com.sun.jersey:jersey-core:jar:1.18.1:compile [INFO] |  \- (org.springframework:spring-aop:jar:3.0.0.RC3:compile - omitted for duplicate) [INFO] +- commons-dbcp:commons-dbcp:jar:1.3:compile [INFO] |  \- commons-pool:commons-pool:jar:1.5.4:compile [INFO] +- org.hibernate:hibernate-core:jar:4.0.1.Final:compile [INFO] |  +- commons-collections:commons-collections:jar:3.2.1:compile [INFO] |  +- antlr:antlr:jar:2.7.7:compile [INFO] |  +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.0.Final:compile [INFO] |  +- dom4j:dom4j:jar:1.6.1:compile [INFO] |  |  \- xml-apis:xml-apis:jar:1.0.b2:compile [INFO] |  +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile [INFO] |  +- org.jboss.logging:jboss-logging:jar:3.1.0.CR2:compile [INFO] |  +- org.javassist:javassist:jar:3.15.0-GA:compile [INFO] |  \- org.hibernate.common:hibernate-commons-annotations:jar:4.0.1.Final:compile [INFO] |     \- (org.jboss.logging:jboss-logging:jar:3.1.0.CR2:compile - omitted for duplicate) [INFO] +- cglib:cglib:jar:2.2.2:compile [INFO] |  \- asm:asm:jar:3.3.1:compile [INFO] +- mysql:mysql-connector-java:jar:5.1.22:compile [INFO] +- org.hibernate:hibernate-validator:jar:4.2.0.Final:compile [INFO] |  +- (javax.validation:validation-api:jar:1.0.0.GA:compile - omitted for conflict with 1.1.0.Final) [INFO] |  \- (org.slf4j:slf4j-api:jar:1.6.1:compile - omitted for conflict with 1.7.5) [INFO] +- com.sun.xml.bind:jaxb-xjc:jar:2.2.6:compile [INFO] +- com.sun.xml.bind:jaxb-impl:jar:2.2.6:compile [INFO] +- javax.xml.bind:jaxb-api:jar:2.2.6:compile [INFO] +- javax.servlet:jstl:jar:1.2:compile [INFO] +- org.apache.tomcat:jsp-api:jar:6.0.32:provided [INFO] |  +- org.apache.tomcat:el-api:jar:6.0.32:provided [INFO] |  \- org.apache.tomcat:servlet-api:jar:6.0.32:provided [INFO] +- log4j:log4j:jar:1.2.15:compile [INFO] |  \- javax.mail:mail:jar:1.4:compile [INFO] |     \- javax.activation:activation:jar:1.1:compile [INFO] +- org.slf4j:slf4j-api:jar:1.7.5:compile [INFO] +- org.slf4j:slf4j-simple:jar:1.6.4:compile [INFO] |  \- (org.slf4j:slf4j-api:jar:1.6.4:compile - omitted for conflict with 1.7.5) [INFO] \- org.slf4j:slf4j-log4j12:jar:1.7.5:compile [INFO]    +- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for duplicate) [INFO]    \- (log4j:log4j:jar:1.2.17:compile - omitted for conflict with 1.2.15) [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 6.667 s [INFO] Finished at: 2014-03-12T14:37:46+01:00 [INFO] Final Memory: 9M/16M [INFO] ------------------------------------------------------------------------ 

As marked as solution in this question: IncompatibleClassChangeError: class ClassMetadataReadingVisitor has interface ClassVisitor as super class how can I check for the dependent jars and conflicts?

like image 276
R. Rahul Avatar asked Mar 12 '14 16:03

R. Rahul


People also ask

How do you analyze a dependency tree in Maven?

A project's dependency tree can be filtered to locate specific dependencies. For example, to find out why Velocity is being used by the Maven Dependency Plugin, we can execute the following in the project's directory: mvn dependency:tree -Dincludes=velocity:velocity.

What is mvn dependency tree command?

mvn dependency:tree Command The main purpose of the dependency:tree goal is to display in form of a tree view all the dependencies of a given project. To exemplify the use of this command, we are going to use the same project created in this article: build REST API with Spring Boot.

How do you check the dependency tree in POM?

2) Find pom. xml of your artifact. Find it using maven infrastructure. Go to https://search.maven.org/ and enter your groupId and artifactId. Or you can go to https://repo1.maven.org/maven2/ and navigate first using plugins groupId, later using artifactId and finally using its version.


1 Answers

It's a dependency tree. The things below a listing are dependencies of their parent.

[INFO] +- org.springframework:spring-core:jar:4.0.2.RELEASE:compile [INFO] |  \- commons-logging:commons-logging:jar:1.1.3:compile 

Spring-core depends on commons-logging.

[INFO] +- org.glassfish.jersey.core:jersey-server:jar:2.6:compile [INFO] |  +- org.glassfish.jersey.core:jersey-common:jar:2.6:compile [INFO] |  |  +- (javax.ws.rs:javax.ws.rs-api:jar:2.0:compile - omitted for duplicate) [INFO] |  |  +- (javax.annotation:javax.annotation-api:jar:1.2:compile - omitted for duplicate) 

Jersey-server depends on jersey-common. Jersey-common depends on rs-api and annotation-api, etc.

like image 101
Dave Newton Avatar answered Oct 05 '22 16:10

Dave Newton