[ 
https://issues.apache.org/jira/browse/MNG-5971?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15151909#comment-15151909
 ] 

Stephane Nicoll commented on MNG-5971:
--------------------------------------

Please stop looking at two poms in Spring Boot, the issue is more complicated 
than that and I've attached a sample project in my original description. Can we 
stop discussing technical and discuss feature please? :)

So yes, I would like that a BOM defined at a given level is included in the 
dependency management of said level, overriding what is provided by the parent 
if necessary. And that whole thing should become the dependency management of 
that level, that can be also overridden further down the road if necessary. 
Long story short: I want bom imports to behave _exactly as_ if I added each 
dependency contained in the bom directly in the project.

Your example is correct.

No back on the _feature_. BOM is an effective way of sharing dependencies: 
instead of having to copy 10 {{<dependency>}} with their respective versions, I 
put them all in a bom and I import that bom with scope {{import}}. This is a 
very effective way of sharing a dependency management. All I am asking here is 
that it behaves  consistently in Maven. 

You already said that the current behaviour is on purpose (and other users 
don't want the bom to override dependencies) which means the bom would be some 
kind of "default if not exist" thing. I honestly don't understand the use case 
the way we (and others in the community) use the bom.

On my own personal opinion, the use case I am describing is _much more logical_ 
than the current behaviour: when you import a BOM in a project, it would be as 
if you had copy/pasted all the {{dependencyManagement}} section of that BOM  in 
the project. So I am seeing the BOM as a shortcut. Does that make sense?



> Dependency management in a child project cannot override a version using a BOM
> ------------------------------------------------------------------------------
>
>                 Key: MNG-5971
>                 URL: https://issues.apache.org/jira/browse/MNG-5971
>             Project: Maven
>          Issue Type: Wish
>          Components: Dependencies
>    Affects Versions: 3.3.3
>            Reporter: Stephane Nicoll
>            Priority: Trivial
>              Labels: close-pending
>
> When a project extends from a parent with a {{dependencyManagement}} section, 
> it is not always possible to properly override (and align) the version to use 
> for a group of dependencies.
> We typically use Bill Of Materials to gather a group of modules and make sure 
> their versions are consistent. 
> The following project demonstrates the issue: 
> https://github.com/snicoll-scratches/maven-dependency-management
> The first commit is a working use case where the parent uses a bom with 
> version A and we use the same bom with version B in the child. Version B is 
> used as expected.
> The second commit demonstrates the faulty scenario. Rather than using a bom 
> in the parent, we use a direct dependency (provided by that bom). We still 
> use the bom with a different version. In that case all the dependencies but 
> the one provided by the parent are overridden (leading to mixed versions for 
> the dependencies provided by the BOM).
> It looks like the distance is still used to compute the version while the 
> graph of dependencies should be flatten at each step for a proper override. 
> Thoughts? Thanks!



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to