Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gradle: how to display where a dependency conflict arises

I have a Gradle project with many dependencies, one of which is resolved as follows:

gradle dependencyInsight --configuration compile --dependency javax.activation

:dependencyInsight
javax.activation:activation:1.1 (conflict resolution)
+--- com.sun.mail:mailapi:1.4.4
|    \--- compile
\--- com.sun.mail:smtp:1.4.4
     \--- compile

javax.activation:activation:1.0.2 -> 1.1
\--- compile

Version 1.1 must be a transitive dependency because I explicitly specified 1.0.2. How can I find out where this specific transitive dependency comes from?

like image 654
Giovanni Botta Avatar asked Jan 23 '14 14:01

Giovanni Botta


People also ask

How do you read a Gradle dependency tree?

In Gradle dependencies are libraries required to build your code. Each of these libraries may have their own dependencies, adding transitive dependencies to your project. This structure is called the Gradle dependency tree, with its own rules on dependency conflict resolution and more.

Where do Gradle dependencies come from?

At runtime, Gradle will locate the declared dependencies if needed for operating a specific task. The dependencies might need to be downloaded from a remote repository, retrieved from a local directory or requires another project to be built in a multi-project setting. This process is called dependency resolution.

What does -> mean in Gradle dependencies?

It means that dependency graph contains multiple dependencies with the same group and module but different versions for e.g. org.


1 Answers

Answering this question is the whole point of the dependencyInsight task. javax.activation:activation:1.1 is pulled in by com.sun.mail:mailapi:1.4.4 and com.sun.mail:smtp:1.4.4.

If your own code also depends on javax.activation, you can force your version with compile("javax.activation:activation:1.0.2") { force = true }. If not, you can force a version with configurations.all { resolutionStrategy.force "javax.activation:activation:1.0.2" }.

like image 88
Peter Niederwieser Avatar answered Oct 18 '22 03:10

Peter Niederwieser