khmarbaise opened a new issue, #12640:
URL: https://github.com/apache/maven/issues/12640

   ### Affected version
   
   Maven 4.0.0-rc6
   
   ### Bug description
   
   Reproducer Git Repo: https://github.com/khmarbaise/maven-bug-4.0.0-rc6-bom
   
   The root pom of the project defines some parts in dependency management like 
this:
   ```xml
     <dependencyManagement>
       <dependencies>
         <dependency>
           <groupId>org.junit</groupId>
           <artifactId>junit-bom</artifactId>
           <version>${version.junit-bom}</version>
           <scope>import</scope>
           <type>pom</type>
         </dependency>
         <dependency>
           <groupId>org.assertj</groupId>
           <artifactId>assertj-bom</artifactId>
           <version>3.27.7</version>
           <scope>import</scope>
           <type>pom</type>
         </dependency>
       </dependencies>
     </dependencyManagement>
   ```
   The intresting module `bom` which is of type packaging `bom` contains the 
following:
   
   ```xml
     <dependencyManagement>
       <dependencies>
         <dependency>
             <groupId>com.soebes.examples.maven4</groupId>
             <artifactId>mod-1</artifactId>
         </dependency>
         <dependency>
             <groupId>com.soebes.examples.maven4</groupId>
             <artifactId>mod-2</artifactId>
         </dependency>
       </dependencies>
     </dependencyManagement>
   ```
   
   What I expect to have is the resulting BOM file contains only the resolved 
versions for the given modules in it...
   ```xml
   <?xml version="1.0" encoding="UTF-8"?>
   <project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
https://maven.apache.org/xsd/maven-4.0.0.xsd";>
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.soebes.examples.maven4</groupId>
     <artifactId>bom</artifactId>
     <version>1.0.0-1</version>
     <packaging>pom</packaging>
     <name>Maven 4 :: BOM :: MOD BOM</name>
     <dependencyManagement>
       <dependencies>
         <dependency>
           <groupId>com.soebes.examples.maven4</groupId>
           <artifactId>mod-1</artifactId>
           <version>1.0.0-1</version>
         </dependency>
         <dependency>
           <groupId>com.soebes.examples.maven4</groupId>
           <artifactId>mod-2</artifactId>
           <version>1.0.0-1</version>
         </dependency>
       </dependencies>
     </dependencyManagement>
   </project>
   ```
   
   but what I get is:
   ```xml
   <project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
https://maven.apache.org/xsd/maven-4.0.0.xsd";>
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.soebes.examples.maven4</groupId>
     <artifactId>bom</artifactId>
     <version>1.0.0-1</version>
     <packaging>pom</packaging>
     <name>Maven 4 :: BOM :: MOD BOM</name>
     <dependencyManagement>
       <dependencies>
         <dependency>
           <groupId>com.soebes.examples.maven4</groupId>
           <artifactId>mod-1</artifactId>
           <version>1.0.0-1</version>
         </dependency>
         <dependency>
           <groupId>com.soebes.examples.maven4</groupId>
           <artifactId>mod-2</artifactId>
           <version>1.0.0-1</version>
         </dependency>
         <dependency>
           <groupId>org.junit.jupiter</groupId>
           <artifactId>junit-jupiter</artifactId>
           <version>6.1.1</version>
         </dependency>
         <dependency>
           <groupId>org.junit.jupiter</groupId>
           <artifactId>junit-jupiter-api</artifactId>
           <version>6.1.1</version>
         </dependency>
         <dependency>
   ....
         <dependency>
           <groupId>org.assertj</groupId>
           <artifactId>assertj-core</artifactId>
           <version>3.27.7</version>
         </dependency>
         <dependency>
           <groupId>org.assertj</groupId>
           <artifactId>assertj-guava</artifactId>
           <version>3.27.7</version>
         </dependency>
   ```
   The first two entries are the defined modules within the multiproject build 
which is fine, but parts which are following are not. They are by inheriting 
from the parent and flatten all dependencies which are from the 
dependencyManagement of the parent.
   
   That gives me no control what exactly will be in the resulting BOM-file. 
Furthermore why is the BOM file (in this case junit-bom and assertj-bom) 
flattened and not kept as it in the resulting BOM? 
   
   If I want to have the `junit-bom` in my bom-module being put into.. I could 
add a reference like this:
   ```xml
     <dependencyManagement>
       <dependencies>
         <dependency>
             <groupId>com.soebes.examples.maven4</groupId>
             <artifactId>mod-1</artifactId>
         </dependency>
         <dependency>
             <groupId>com.soebes.examples.maven4</groupId>
             <artifactId>mod-2</artifactId>
         </dependency>
         <dependency>
           <groupId>org.junit</groupId>
           <artifactId>junit-bom</artifactId>
           <version>${version.junit-bom}</version>
           <scope>import</scope>
           <type>pom</type>
         </dependency>
       </dependencies>
     </dependencyManagement>
   ```
   But as before it will be flattened which is from my perspective not a good 
idea.
   That would give the control of the resulting bom file.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to