This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/master by this push:
     new 6197545c4a [MNG-8602] Fix BOM consumer pom (#2139)
6197545c4a is described below

commit 6197545c4a8937134fcd7c22e9ccda1835ae0895
Author: Guillaume Nodet <gno...@gmail.com>
AuthorDate: Tue Mar 4 11:12:26 2025 +0100

    [MNG-8602] Fix BOM consumer pom (#2139)
---
 .../impl/DefaultConsumerPomBuilder.java            | 146 +++++++++++----------
 .../impl/ConsumerPomArtifactTransformerTest.java   |   4 +-
 .../impl/ConsumerPomBuilderTest.java               |   2 +-
 3 files changed, 80 insertions(+), 72 deletions(-)

diff --git 
a/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomBuilder.java
 
b/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomBuilder.java
index 0944e054d1..e3164beba4 100644
--- 
a/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomBuilder.java
+++ 
b/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomBuilder.java
@@ -22,7 +22,6 @@
 import javax.inject.Named;
 
 import java.nio.file.Path;
-import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -34,7 +33,6 @@
 import org.apache.maven.api.PathScope;
 import org.apache.maven.api.SessionData;
 import org.apache.maven.api.model.Dependency;
-import org.apache.maven.api.model.DependencyManagement;
 import org.apache.maven.api.model.DistributionManagement;
 import org.apache.maven.api.model.Model;
 import org.apache.maven.api.model.ModelBase;
@@ -75,8 +73,12 @@ public Model build(RepositorySystemSession session, 
MavenProject project, Path s
         Model model = project.getModel().getDelegate();
         String packaging = model.getPackaging();
         String originalPackaging = project.getOriginalModel().getPackaging();
-        if (POM_PACKAGING.equals(packaging) && 
!BOM_PACKAGING.equals(originalPackaging)) {
-            return buildPom(session, project, src);
+        if (POM_PACKAGING.equals(packaging)) {
+            if (BOM_PACKAGING.equals(originalPackaging)) {
+                return buildBom(session, project, src);
+            } else {
+                return buildPom(session, project, src);
+            }
         } else {
             return buildNonPom(session, project, src);
         }
@@ -86,13 +88,20 @@ protected Model buildPom(RepositorySystemSession session, 
MavenProject project,
             throws ModelBuilderException {
         ModelBuilderResult result = buildModel(session, src);
         Model model = result.getRawModel();
-        return transform(model, project);
+        return transformPom(model, project);
+    }
+
+    protected Model buildBom(RepositorySystemSession session, MavenProject 
project, Path src)
+            throws ModelBuilderException {
+        ModelBuilderResult result = buildModel(session, src);
+        Model model = result.getEffectiveModel();
+        return transformBom(model, project);
     }
 
     protected Model buildNonPom(RepositorySystemSession session, MavenProject 
project, Path src)
             throws ModelBuilderException {
         Model model = buildEffectiveModel(session, src);
-        return transform(model, project);
+        return transformNonPom(model, project);
     }
 
     private Model buildEffectiveModel(RepositorySystemSession session, Path 
src) throws ModelBuilderException {
@@ -193,72 +202,71 @@ private ModelBuilderResult 
buildModel(RepositorySystemSession session, Path src)
         return result;
     }
 
-    static Model transform(Model model, MavenProject project) {
-        String packaging = model.getPackaging();
+    static Model transformNonPom(Model model, MavenProject project) {
         boolean preserveModelVersion = model.isPreserveModelVersion();
-        if (POM_PACKAGING.equals(packaging)) {
-            // raw to consumer transform
-            model = 
model.withRoot(false).withModules(null).withSubprojects(null);
-            if (model.getParent() != null) {
-                model = 
model.withParent(model.getParent().withRelativePath(null));
-            }
 
-            if (!preserveModelVersion) {
-                model = model.withPreserveModelVersion(false);
-                String modelVersion = new 
MavenModelVersion().getModelVersion(model);
-                model = model.withModelVersion(modelVersion);
-            }
-        } else if (BOM_PACKAGING.equals(packaging)) {
-            DependencyManagement dependencyManagement =
-                    
project.getOriginalModel().getDependencyManagement().getDelegate();
-            List<Dependency> dependencies = new ArrayList<>();
-            String version = model.getVersion();
-
-            dependencyManagement
-                    .getDependencies()
-                    .forEach((dependency) -> 
dependencies.add(dependency.withVersion(version)));
-            Model.Builder builder = prune(
-                    Model.newBuilder(model, true)
-                            .preserveModelVersion(false)
-                            .root(false)
-                            .parent(null)
-                            
.dependencyManagement(dependencyManagement.withDependencies(dependencies))
-                            .build(null),
-                    model);
-            builder.packaging(POM_PACKAGING);
-            builder.profiles(prune(model.getProfiles()));
-
-            model = builder.build();
-            String modelVersion = new 
MavenModelVersion().getModelVersion(model);
-            if (!ModelBuilder.MODEL_VERSION_4_0_0.equals(modelVersion) && 
!preserveModelVersion) {
-                warnNotDowngraded(project);
-            }
-            model = model.withModelVersion(modelVersion);
-        } else {
-            Model.Builder builder = prune(
-                            Model.newBuilder(model, true)
-                                    .preserveModelVersion(false)
-                                    .root(false)
-                                    .parent(null)
-                                    .build(null),
-                            model)
-                    .mailingLists(null)
-                    .issueManagement(null)
-                    .scm(
-                            model.getScm() != null
-                                    ? Scm.newBuilder(model.getScm(), true)
-                                            
.childScmConnectionInheritAppendPath(null)
-                                            .childScmUrlInheritAppendPath(null)
-                                            
.childScmDeveloperConnectionInheritAppendPath(null)
-                                            .build()
-                                    : null);
-            builder.profiles(prune(model.getProfiles()));
-
-            model = builder.build();
+        Model.Builder builder = prune(
+                        Model.newBuilder(model, true)
+                                .preserveModelVersion(false)
+                                .root(false)
+                                .parent(null)
+                                .build(null),
+                        model)
+                .mailingLists(null)
+                .issueManagement(null)
+                .scm(
+                        model.getScm() != null
+                                ? Scm.newBuilder(model.getScm(), true)
+                                        
.childScmConnectionInheritAppendPath(null)
+                                        .childScmUrlInheritAppendPath(null)
+                                        
.childScmDeveloperConnectionInheritAppendPath(null)
+                                        .build()
+                                : null);
+        builder.profiles(prune(model.getProfiles()));
+
+        model = builder.build();
+        String modelVersion = new MavenModelVersion().getModelVersion(model);
+        if (!ModelBuilder.MODEL_VERSION_4_0_0.equals(modelVersion) && 
!preserveModelVersion) {
+            warnNotDowngraded(project);
+        }
+        model = model.withModelVersion(modelVersion);
+        return model;
+    }
+
+    static Model transformBom(Model model, MavenProject project) {
+        boolean preserveModelVersion = model.isPreserveModelVersion();
+
+        Model.Builder builder = prune(
+                Model.newBuilder(model, true)
+                        .preserveModelVersion(false)
+                        .root(false)
+                        .parent(null)
+                        .build(null),
+                model);
+        builder.packaging(POM_PACKAGING);
+        builder.profiles(prune(model.getProfiles()));
+
+        model = builder.build();
+        String modelVersion = new MavenModelVersion().getModelVersion(model);
+        if (!ModelBuilder.MODEL_VERSION_4_0_0.equals(modelVersion) && 
!preserveModelVersion) {
+            warnNotDowngraded(project);
+        }
+        model = model.withModelVersion(modelVersion);
+        return model;
+    }
+
+    static Model transformPom(Model model, MavenProject project) {
+        boolean preserveModelVersion = model.isPreserveModelVersion();
+
+        // raw to consumer transform
+        model = model.withRoot(false).withModules(null).withSubprojects(null);
+        if (model.getParent() != null) {
+            model = model.withParent(model.getParent().withRelativePath(null));
+        }
+
+        if (!preserveModelVersion) {
+            model = model.withPreserveModelVersion(false);
             String modelVersion = new 
MavenModelVersion().getModelVersion(model);
-            if (!ModelBuilder.MODEL_VERSION_4_0_0.equals(modelVersion) && 
!preserveModelVersion) {
-                warnNotDowngraded(project);
-            }
             model = model.withModelVersion(modelVersion);
         }
         return model;
diff --git 
a/impl/maven-core/src/test/java/org/apache/maven/internal/transformation/impl/ConsumerPomArtifactTransformerTest.java
 
b/impl/maven-core/src/test/java/org/apache/maven/internal/transformation/impl/ConsumerPomArtifactTransformerTest.java
index ed002978e9..4f38473861 100644
--- 
a/impl/maven-core/src/test/java/org/apache/maven/internal/transformation/impl/ConsumerPomArtifactTransformerTest.java
+++ 
b/impl/maven-core/src/test/java/org/apache/maven/internal/transformation/impl/ConsumerPomArtifactTransformerTest.java
@@ -56,7 +56,7 @@ void transform() throws Exception {
             project.setOriginalModel(model);
             DefaultConsumerPomArtifactTransformer t = new 
DefaultConsumerPomArtifactTransformer((s, p, f) -> {
                 try (InputStream is = Files.newInputStream(f)) {
-                    return DefaultConsumerPomBuilder.transform(new 
MavenStaxReader().read(is), project);
+                    return DefaultConsumerPomBuilder.transformPom(new 
MavenStaxReader().read(is), project);
                 }
             });
 
@@ -83,7 +83,7 @@ void transformJarConsumerPom() throws Exception {
             project.setOriginalModel(model);
             DefaultConsumerPomArtifactTransformer t = new 
DefaultConsumerPomArtifactTransformer((s, p, f) -> {
                 try (InputStream is = Files.newInputStream(f)) {
-                    return DefaultConsumerPomBuilder.transform(new 
MavenStaxReader().read(is), project);
+                    return DefaultConsumerPomBuilder.transformNonPom(new 
MavenStaxReader().read(is), project);
                 }
             });
 
diff --git 
a/impl/maven-core/src/test/java/org/apache/maven/internal/transformation/impl/ConsumerPomBuilderTest.java
 
b/impl/maven-core/src/test/java/org/apache/maven/internal/transformation/impl/ConsumerPomBuilderTest.java
index d627796b13..5bd7947952 100644
--- 
a/impl/maven-core/src/test/java/org/apache/maven/internal/transformation/impl/ConsumerPomBuilderTest.java
+++ 
b/impl/maven-core/src/test/java/org/apache/maven/internal/transformation/impl/ConsumerPomBuilderTest.java
@@ -153,7 +153,7 @@ void testScmInheritance() throws Exception {
                         .childScmDeveloperConnectionInheritAppendPath("true")
                         .build())
                 .build();
-        Model transformed = DefaultConsumerPomBuilder.transform(model, null);
+        Model transformed = DefaultConsumerPomBuilder.transformNonPom(model, 
null);
         
assertNull(transformed.getScm().getChildScmConnectionInheritAppendPath());
         assertNull(transformed.getScm().getChildScmUrlInheritAppendPath());
         
assertNull(transformed.getScm().getChildScmDeveloperConnectionInheritAppendPath());

Reply via email to