Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
3.6.1
-
None
-
None
Description
overriding the dependencies of a parent POM is possible by setting the dependency version explicitly in the child POM which makes sense; since a parent POM is "suggesting" dependency versions for children that don't know which version to use and a child that knows exactly which version they need can ignore their parents "suggestion". however that is not the case for transitive dependencies of the dependency explicitly versioned in the child.
example POM:
mvn dependency:tree output:
[INFO] foo.bar:kotlin-test:jar:1.0-SNAPSHOT
[INFO] - org.jetbrains.kotlin:kotlin-stdlib-jdk8:jar:1.3.31:compile
[INFO] +- org.jetbrains.kotlin:kotlin-stdlib:jar:1.2.71:compile
[INFO] | +- org.jetbrains.kotlin:kotlin-stdlib-common:jar:1.2.71:compile
[INFO] | - org.jetbrains:annotations:jar:13.0:compile
[INFO] - org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:1.2.71:compile
expected:
[INFO] foo.bar:kotlin-test:jar:1.0-SNAPSHOT
[INFO] - org.jetbrains.kotlin:kotlin-stdlib-jdk8:jar:1.3.31:compile
[INFO] +- org.jetbrains.kotlin:kotlin-stdlib:jar:1.3.31:compile
[INFO] | +- org.jetbrains.kotlin:kotlin-stdlib-common:jar:1.3.31:compile
[INFO] | - org.jetbrains:annotations:jar:13.0:compile
[INFO] - org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:1.3.31:compile
since 'kotlin-stdlib-jdk8:1.3.31' was compiled with 'kotlin-stdlib:1.3.31' runtime exceptions will happen; yet nobody needs 'kotlin-stdlib:1.2.71'