Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I read a Maven dependency tree

Tags:

java

maven

I have servlet-api version 2.5 as provided scope in pom.xml. Here is part of the dependency:tree output of my project. What does "version managed from 2.3; scope managed from compile" mean?

[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) 

Does that mean there is some transitive dependency on version 2.3 on my classpath? My WAR file does not have servlet-api jar at all, but I do use old version of Spring 2.5.4. I suspect the Spring framework depends on servlet-api 2.3.

like image 344
user2982680 Avatar asked Nov 25 '13 10:11

user2982680


People also ask

How do you analyze a dependency tree in Maven?

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.

How do I run a dependency tree in Maven?

How to get the Maven Dependency Tree of a Project. We can run mvn dependency:tree command in the terminal to print the project dependency tree. For our example, I will be using the Mockito Tutorial project. You can download the project from the GitHub repository.

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.


1 Answers

The message basically means that the version of servlet-api would have transitively been 2.3 (so basically in commons-logging's pom they define servlet-api with version 2.3), but that version 2.5 was specifically asked for in your project, so that is what was used.

Same goes for the scope. In commons-logging's pom it is defined with scope compile, but you have it defined with scope provided, so again that is the scope that was used.

like image 168
DB5 Avatar answered Sep 20 '22 20:09

DB5