So to say, in a project that for example depends on maven-core ONLY, I
would assume my transitive deps would be good....
But, in a moment I have OTHER direct dependendencies, that MAY have
overlapping transitive dependencies with anything overlapping with those
from maven-core, things go south...

T

On Thu, Jun 15, 2023 at 8:17 AM Tamás Cservenák <ta...@cservenak.net> wrote:

> Am exactly along Thomas lines...
>
> And even tried to backport Maven 4 BOM to Maven 3.9.x, just to figure out
> that as it stands
> https://github.com/apache/maven/blob/master/maven-bom/pom.xml
> (modules only, so for consumer "first level deps") makes no sense to me.
>
> T
>
> On Thu, Jun 15, 2023 at 8:12 AM Thomas Broyer <t.bro...@gmail.com> wrote:
>
>> I must say I haven't seen any project using the approach described in the
>> Maven doc.
>>
>> Most projects I've seen use the root POM as both the aggregator POM and
>> the
>> parent POM, and have their BOM in a submodule. Sometimes the root POM is
>> only the aggregator and the parent POM is a submodule as well.
>>
>> Actually the biggest problem with BOMs is that you want them to have a
>> parent to share all deployment plugins configuration, but without the
>> dependency management of the project, so other submodules would have a
>> different parent with those same plugins, possibly other plugins, and
>> dependency management (importing the BOM and, in your example, Guava).
>> This can quickly lead to many POM/submodules just to split plugin
>> configuration and dependency mangement and the BOM and the parent and…
>>
>> Le jeu. 15 juin 2023 à 01:05, Garret Wilson <gar...@globalmentor.com> a
>> écrit :
>>
>> > Hi, everyone. I understand this list to be a general forum for Apache
>> > Maven users, so as such I'm sharing some ideas I've had related to BOMs.
>> >
>> > Over the years I've changed how I define "Bill of Material" POMs for my
>> > large, aggregated projects. Recently I've settled on a pattern which I
>> > feel is a refinement of the official Maven approach
>> > <
>> >
>> https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#bill-of-materials-bom-poms
>> >
>> >
>> > for putting together a BOM. I've described the technique in my blog post
>> > I published today: /Improving the Maven Bill of Materials (BOM) Pattern/
>> > <https://www.garretwilson.com/blog/2023/06/14/improve-maven-bom-pattern
>> >.
>> > Here's a summary.
>> >
>> > Assuming we have a project `com.example:…` with aggregated subprojects
>> > `com.example:foo` and `com.example:bar`, my technique uses the following
>> > directory structure:
>> >
>> > |pom.xml (BOM) parent-pom.xml ├── foo/ │ └── pom.xml └── bar/ └──
>> pom.xml|
>> >
>> > Interestingly the top-level BOM aggregates all three POMs: the two
>> > submodule POMs as well as `parent-pom.xml` in the project root
>> > directory. The two submodules `foo` and `bar` use `parent-pom.xml` as
>> > their parent.
>> >
>> > I see this bringing a couple of benefits over the official approach in
>> > the documentation:
>> >
>> >   * Aggregated modules are easy to find—in the top-level POM where they
>> >     logically should be.
>> >   * Other project dependencies and configurations are located nearby, in
>> >     the `parent-pom.xml` file in the same project root directory as the
>> >     BOM, not relegated to a separate subdirectory.
>> >
>> > The post goes into much more detail explaining the differences, with
>> > example of the POM contents.
>> >
>> > I'd be interested in feedback on this technique if you have any
>> > comments—especially if you find a flaw in this approach.
>> >
>> > Best,
>> >
>> > Garret
>> >
>>
>

Reply via email to