You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Gabriel Belingueres (Jira)" <ji...@apache.org> on 2019/08/27 02:03:01 UTC
[jira] [Commented] (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:comment-tabpanel&focusedCommentId=16916273#comment-16916273 ]
Gabriel Belingueres commented on MNG-6663:
------------------------------------------
It is not a bug.
This is commonly solved adding a BOM (Bill Of Materials) pom in the dependencyManagement section with import scope:
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-bom</artifactId>
<version>1.3.31</version>
<type>pom</type>
<scope>import</scope>
</dependency>
> 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
(v8.3.2#803003)