You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Jay mann (JIRA)" <ji...@apache.org> on 2017/06/30 14:01:00 UTC

[jira] [Updated] (MNG-6246) Inconsistent override behaivor with BOM vs dependency

     [ https://issues.apache.org/jira/browse/MNG-6246?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jay mann updated MNG-6246:
--------------------------
    Description: 
Consider we have 2 BOM files:
bom1 - dependency version 1
bom2 - dependency version 2'

When a bom1 is imported into a parent and bom2 is imported into a child of parernt, child correctly overrides the dependency and uses "verision 2".

When parent does not import bom1 but explicitly states "dependency 1" in the <dependencyManagement> section, and child imports bom2, "version 1" of dependency is used (bom2 in child does not override the dependency)

This seems like inconsistent behavior as documentation explains that a BOM basically imports the <dependencyManagement> section of the bom into the current pom.  

If this is expected behavior it should be documented as we recently moved all our dependencyManagement section into a BOM for organizational reasons and it did not work as expected. 

Attached is a sample, to test simply extract and run:

mvn install -f bom1/pom.xml
mvn install -f bom2/pom.xml
mvn dependency:tree -f project/child/pom.xml
mvn dependency:tree -f project2/child/pom.xml

project uses bom in parent and child and is overridden correctly.
project2 parent uses dependency instead of bom, child uses bom but dependency is NOT overridden. 


  was:
Consider we have 2 BOM files:
bom1 - dependency version 1
bom2 - dependency version 2'

When a bom1 is imported into a parent and bom2 is imported into a child of parernt, child correctly overrides the dependency and uses "verision 2".

When parent does not import bom1 but explicitly states "dependency 1" in the <dependencyManagement> section, and child imports bom2, "version 1" of dependency is used (bom2 in child does not override the dependency)

This seems like inconsistent behavior as documentation explains that a BOM basically imports the <dependencyManagement> section of the bom into the pom current pom.  

If this is expected behavior it should be documented as we recently moved all our dependencyManagement section into a BOM for organizational reasons and it did not work as expected. 

Attached is a sample, to test simply extract and run:

mvn install -f bom1/pom.xml
mvn install -f bom2/pom.xml
mvn dependency:tree -f project/child/pom.xml
mvn dependency:tree -f project2/child/pom.xml

project uses bom in parent and child and is overridden correctly.
project2 parent uses dependency instead of bom, child uses bom but dependency is NOT overridden. 



> Inconsistent override behaivor with BOM vs dependency
> -----------------------------------------------------
>
>                 Key: MNG-6246
>                 URL: https://issues.apache.org/jira/browse/MNG-6246
>             Project: Maven
>          Issue Type: Bug
>          Components: Dependencies
>    Affects Versions: 3.5.0
>         Environment: osx jdk 1.8
>            Reporter: Jay mann
>         Attachments: mvn-bug.tar.gz
>
>
> Consider we have 2 BOM files:
> bom1 - dependency version 1
> bom2 - dependency version 2'
> When a bom1 is imported into a parent and bom2 is imported into a child of parernt, child correctly overrides the dependency and uses "verision 2".
> When parent does not import bom1 but explicitly states "dependency 1" in the <dependencyManagement> section, and child imports bom2, "version 1" of dependency is used (bom2 in child does not override the dependency)
> This seems like inconsistent behavior as documentation explains that a BOM basically imports the <dependencyManagement> section of the bom into the current pom.  
> If this is expected behavior it should be documented as we recently moved all our dependencyManagement section into a BOM for organizational reasons and it did not work as expected. 
> Attached is a sample, to test simply extract and run:
> mvn install -f bom1/pom.xml
> mvn install -f bom2/pom.xml
> mvn dependency:tree -f project/child/pom.xml
> mvn dependency:tree -f project2/child/pom.xml
> project uses bom in parent and child and is overridden correctly.
> project2 parent uses dependency instead of bom, child uses bom but dependency is NOT overridden. 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)