When I run mvn dependency:tree -Dverbose
, I see the following:
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ reddit_digest ---
...
[INFO] +- com.rajivprab:sava:jar:1.2.0:compile
[INFO] | +- com.rajivprab:cava:jar:1.5.0:compile
[INFO] | | +- org.apache.commons:commons-lang3:jar:3.5:compile
...
[INFO] | | \- com.google.guava:guava:jar:20.0:compile
which is very surprising because the cava artifact has guava version-22 specified.
If I then go ahead and add the guava version-22 as a direct dependency on my project, and run mvn dependency:tree -Dverbose
again, I now see the following, where cava's guava version is magically fixed to what it should be (22).
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ reddit_digest ---
...
[INFO] +- com.google.guava:guava:jar:22.0:compile
[INFO] +- com.rajivprab:sava:jar:1.2.0:compile
[INFO] | +- com.rajivprab:cava:jar:1.5.0:compile
[INFO] | | +- org.apache.commons:commons-lang3:jar:3.5:compile
...
[INFO] | | \- (com.google.guava:guava:jar:22.0:compile - omitted for duplicate)
What's causing the guava transitive dependency version to behave in such an unexpected manner?
Running the dependency-tree on cava:
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ cava ---
....
[INFO] com.rajivprab:cava:jar:1.5.0
[INFO] +- com.google.guava:guava:jar:22.0:compile
....
[INFO] \- com.google.truth:truth:jar:0.33:test
[INFO] +- (com.google.guava:guava:jar:20.0:test - omitted for conflict with 22.0)
Running the dependency-tree on sava, and looking for all instances of guava:
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ sava ---
[INFO] com.rajivprab:sava:jar:1.2.0
[INFO] +- com.rajivprab:cava:jar:1.5.0:compile
...
[INFO] | \- com.google.guava:guava:jar:22.0:compile
...
[INFO] +- com.google.truth:truth:jar:0.33:test
[INFO] | +- (com.google.guava:guava:jar:20.0:test - omitted for conflict with 22.0)
...
[INFO] +- org.glassfish.jersey.media:jersey-media-multipart:jar:2.25.1:compile
[INFO] | +- org.glassfish.jersey.core:jersey-common:jar:2.25.1:compile
[INFO] | | +- (javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile - omitted for duplicate)
[INFO] | | +- javax.annotation:javax.annotation-api:jar:1.2:compile
[INFO] | | +- org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.25.1:compile
My maven version:
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T15:39:06-04:00)
Maven home: /usr/local/Cellar/maven/3.5.0/libexec
Java version: 1.8.0_92, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.12.5", arch: "x86_64", family: "mac"