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 d296927de2 [MNG-8119] Remove build section from profiles in the 
consumer pom (#1503)
d296927de2 is described below

commit d296927de27c0118e1ca05c47f85f4e12132f373
Author: Guillaume Nodet <gno...@gmail.com>
AuthorDate: Mon May 13 14:04:39 2024 +0200

    [MNG-8119] Remove build section from profiles in the consumer pom (#1503)
---
 .../impl/DefaultConsumerPomBuilder.java            | 34 ++++++++--
 .../impl/ConsumerPomArtifactTransformerTest.java   | 28 ++++++++
 .../resources/projects/transform/jar/after.pom     | 35 ++++++++++
 .../resources/projects/transform/jar/before.pom    | 74 ++++++++++++++++++++++
 4 files changed, 165 insertions(+), 6 deletions(-)

diff --git 
a/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomBuilder.java
 
b/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomBuilder.java
index c86f395f33..9579697fc0 100644
--- 
a/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomBuilder.java
+++ 
b/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomBuilder.java
@@ -258,9 +258,7 @@ class DefaultConsumerPomBuilder implements 
ConsumerPomBuilder {
                             .build(null),
                     model);
             builder.packaging(POM_PACKAGING);
-            builder.profiles(model.getProfiles().stream()
-                    .map(p -> prune(Profile.newBuilder(p, true), p).build())
-                    .collect(Collectors.toList()));
+            builder.profiles(prune(model.getProfiles()));
 
             model = builder.build();
             String modelVersion = new 
MavenModelVersion().getModelVersion(model);
@@ -273,9 +271,8 @@ class DefaultConsumerPomBuilder implements 
ConsumerPomBuilder {
                             .parent(null)
                             .build(null),
                     model);
-            builder.profiles(model.getProfiles().stream()
-                    .map(p -> prune(Profile.newBuilder(p, true), p).build())
-                    .collect(Collectors.toList()));
+            builder.profiles(prune(model.getProfiles()));
+
             model = builder.build();
             String modelVersion = new 
MavenModelVersion().getModelVersion(model);
             model = model.withModelVersion(modelVersion);
@@ -283,6 +280,31 @@ class DefaultConsumerPomBuilder implements 
ConsumerPomBuilder {
         return model;
     }
 
+    private static List<Profile> prune(List<Profile> profiles) {
+        return profiles.stream()
+                .map(p -> {
+                    Profile.Builder builder = Profile.newBuilder(p, true);
+                    prune((ModelBase.Builder) builder, p);
+                    return builder.build(null).build();
+                })
+                .filter(p -> !isEmpty(p))
+                .collect(Collectors.toList());
+    }
+
+    private static boolean isEmpty(Profile profile) {
+        return profile.getActivation() == null
+                && profile.getBuild() == null
+                && profile.getDependencies().isEmpty()
+                && (profile.getDependencyManagement() == null
+                        || 
profile.getDependencyManagement().getDependencies().isEmpty())
+                && profile.getDistributionManagement() == null
+                && profile.getModules().isEmpty()
+                && profile.getProperties().isEmpty()
+                && profile.getRepositories().isEmpty()
+                && profile.getPluginRepositories().isEmpty()
+                && profile.getReporting() == null;
+    }
+
     private static <T extends ModelBase.Builder> T prune(T builder, ModelBase 
model) {
         builder.properties(null).reporting(null);
         if (model.getDistributionManagement() != null
diff --git 
a/maven-core/src/test/java/org/apache/maven/internal/transformation/impl/ConsumerPomArtifactTransformerTest.java
 
b/maven-core/src/test/java/org/apache/maven/internal/transformation/impl/ConsumerPomArtifactTransformerTest.java
index 970881aa4d..b8f621f1dc 100644
--- 
a/maven-core/src/test/java/org/apache/maven/internal/transformation/impl/ConsumerPomArtifactTransformerTest.java
+++ 
b/maven-core/src/test/java/org/apache/maven/internal/transformation/impl/ConsumerPomArtifactTransformerTest.java
@@ -68,6 +68,34 @@ class ConsumerPomArtifactTransformerTest {
         
XmlAssert.assertThat(afterPomFile.toFile()).and(tempFile.toFile()).areIdentical();
     }
 
+    @Test
+    void transformJarConsumerPom() throws Exception {
+        RepositorySystemSession systemSessionMock = 
Mockito.mock(RepositorySystemSession.class);
+        SessionData sessionDataMock = Mockito.mock(SessionData.class);
+        when(systemSessionMock.getData()).thenReturn(sessionDataMock);
+        when(sessionDataMock.get(any())).thenReturn(new 
NoTransformerContext());
+
+        Path beforePomFile = 
Paths.get("src/test/resources/projects/transform/jar/before.pom")
+                .toAbsolutePath();
+        Path afterPomFile =
+                
Paths.get("src/test/resources/projects/transform/jar/after.pom").toAbsolutePath();
+        Path tempFile = Files.createTempFile("", ".pom");
+        Files.delete(tempFile);
+        try (InputStream expected = Files.newInputStream(beforePomFile)) {
+            Model model = new Model(new MavenStaxReader().read(expected));
+            MavenProject project = new MavenProject(model);
+            project.setOriginalModel(model);
+            DefaultConsumerPomArtifactTransformer t = new 
DefaultConsumerPomArtifactTransformer((s, p, f) -> {
+                try (InputStream is = Files.newInputStream(f)) {
+                    return DefaultConsumerPomBuilder.transform(new 
MavenStaxReader().read(is), project);
+                }
+            });
+
+            t.transform(project, systemSessionMock, beforePomFile, tempFile);
+        }
+        
XmlAssert.assertThat(afterPomFile.toFile()).and(tempFile.toFile()).areIdentical();
+    }
+
     @Test
     void injectTransformedArtifactsWithoutPomShouldNotInjectAnyArtifacts() 
throws IOException {
         MavenProject emptyProject = new MavenProject();
diff --git a/maven-core/src/test/resources/projects/transform/jar/after.pom 
b/maven-core/src/test/resources/projects/transform/jar/after.pom
new file mode 100644
index 0000000000..90810bb2ef
--- /dev/null
+++ b/maven-core/src/test/resources/projects/transform/jar/after.pom
@@ -0,0 +1,35 @@
+<?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>io.github.helpermethod</groupId>
+  <artifactId>zip-forge</artifactId>
+  <version>1.0.1</version>
+  <name>zip-forge</name>
+  <description>A tiny, formatter-friendly Java DSL for creating ZIP 
files.</description>
+  <url>https://github.com/helpermethod/zip-forge</url>
+  <licenses>
+    <license>
+      <name>The Apache License, Version 2.0</name>
+      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
+    </license>
+  </licenses>
+  <scm>
+    <connection>scm:git:g...@github.com:helpermethod/zip-forge.git</connection>
+    
<developerConnection>scm:git:g...@github.com:helpermethod/zip-forge.git</developerConnection>
+    <url>g...@github.com:helpermethod/zip-forge.git</url>
+  </scm>
+  <dependencies>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter</artifactId>
+      <version>5.10.2</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.assertj</groupId>
+      <artifactId>assertj-core</artifactId>
+      <version>3.25.3</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>
\ No newline at end of file
diff --git a/maven-core/src/test/resources/projects/transform/jar/before.pom 
b/maven-core/src/test/resources/projects/transform/jar/before.pom
new file mode 100644
index 0000000000..cfe2e04cc1
--- /dev/null
+++ b/maven-core/src/test/resources/projects/transform/jar/before.pom
@@ -0,0 +1,74 @@
+<?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>io.github.helpermethod</groupId>
+    <artifactId>zip-forge</artifactId>
+    <version>1.0.1</version>
+    <name>zip-forge</name>
+    <description>A tiny, formatter-friendly Java DSL for creating ZIP 
files.</description>
+    <url>https://github.com/helpermethod/zip-forge</url>
+    <licenses>
+        <license>
+            <name>The Apache License, Version 2.0</name>
+            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
+        </license>
+    </licenses>
+    <scm>
+        
<connection>scm:git:g...@github.com:helpermethod/zip-forge.git</connection>
+        
<developerConnection>scm:git:g...@github.com:helpermethod/zip-forge.git</developerConnection>
+        <url>g...@github.com:helpermethod/zip-forge.git</url>
+    </scm>
+    <dependencies>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter</artifactId>
+            <version>5.10.2</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <version>3.25.3</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <profiles>
+        <profile>
+            <id>release</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <artifactId>maven-javadoc-plugin</artifactId>
+                        <version>3.6.3</version>
+                        <executions>
+                            <execution>
+                                <id>attach-javadocs</id>
+                                <goals>
+                                    <goal>jar</goal>
+                                </goals>
+                                <configuration>
+                                    <attach>true</attach>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <artifactId>maven-source-plugin</artifactId>
+                        <version>3.3.1</version>
+                        <executions>
+                            <execution>
+                                <id>attach-sources</id>
+                                <goals>
+                                    <goal>jar</goal>
+                                </goals>
+                                <configuration>
+                                    <attach>true</attach>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
\ No newline at end of file

Reply via email to