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 <[email protected]>
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:[email protected]:helpermethod/zip-forge.git</connection>
+
<developerConnection>scm:git:[email protected]:helpermethod/zip-forge.git</developerConnection>
+ <url>[email protected]: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:[email protected]:helpermethod/zip-forge.git</connection>
+
<developerConnection>scm:git:[email protected]:helpermethod/zip-forge.git</developerConnection>
+ <url>[email protected]: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