Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to find the parent of a Maven transitive dependency

I am building a Java (web) application with Maven and Eclipse.

When I look inside my .war file I can see the following logging libraries there:

log4j-1.2.14.jar
log4j-1.2.17.jar
slf4j-api-1.7.5.jar
slf4j-log4j12-1.7.5.jar

I did not declared these libraries in my pom.xml, so they probably are transitive dependencies (i.e. dependencies of my dependencies).

How can I find out which of my dependencies depend on these libraries?

I tried to use the mvn dependency:tree plugin, but it does not show any of these .jars.

In Eclipse, the Java Resources > Libraries > Maven Dependencies node does not show them either. Though, curiously, it shows other transitive dependencies of my project.

like image 536
Alexey Avatar asked Oct 14 '25 02:10

Alexey


1 Answers

If you want to rely on maven only you may want to take a closer look on the dependency plugin, here are two examples:

mvn dependency:tree -Dverbose will display more detailed information - especially for example if a artifact will be omitted for conflicting with another artifacts version (e.g. convergence issue). It will also display you the hirachy with all the transitive dependencies.

To have a specific artefact analyzed (to for example find who delivers a specific transitive dependency) you can specify like so:

mvn dependency:tree -Dincludes=com.my.group.id:my-artefact-id:jar:1.0.1 -Dverbose

(Where you obviously need to adjust the artefact, packaging type and version according to your needs)

like image 142
JBA Avatar answered Oct 18 '25 01:10

JBA