You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Alireza Ghassemi (JIRA)" <ji...@apache.org> on 2019/05/28 13:37:00 UTC
[jira] [Updated] (MNG-6663) overriding parent dependency management
doesn't work for transitive dependencies
[ https://issues.apache.org/jira/browse/MNG-6663?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alireza Ghassemi updated MNG-6663:
----------------------------------
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:
[^pom.xml]
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'
was:
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 and 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'
example POM:
[^pom.xml]
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
> overriding parent dependency management doesn't work for transitive dependencies
> --------------------------------------------------------------------------------
>
> Key: MNG-6663
> URL: https://issues.apache.org/jira/browse/MNG-6663
> Project: Maven
> Issue Type: Bug
> Components: Dependencies
> Affects Versions: 3.6.1
> Reporter: Alireza Ghassemi
> Priority: Major
> Attachments: pom.xml
>
>
> 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:
> [^pom.xml]
> 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'
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)