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 81231b886 [MNG-7707] Skip consumer pom artifact transformation when no 
pom is available (fixes #1060)
81231b886 is described below

commit 81231b886563937d47560ebf468e4e24251877b7
Author: Giovanni van der Schelde <[email protected]>
AuthorDate: Fri Apr 21 21:26:10 2023 +0200

    [MNG-7707] Skip consumer pom artifact transformation when no pom is 
available (fixes #1060)
---
 .../ConsumerPomArtifactTransformer.java            |  4 ++++
 .../ConsumerPomArtifactTransformerTest.java        | 23 ++++++++++++++++++++++
 2 files changed, 27 insertions(+)

diff --git 
a/maven-core/src/main/java/org/apache/maven/internal/transformation/ConsumerPomArtifactTransformer.java
 
b/maven-core/src/main/java/org/apache/maven/internal/transformation/ConsumerPomArtifactTransformer.java
index eabbe03f7..78bee09c1 100644
--- 
a/maven-core/src/main/java/org/apache/maven/internal/transformation/ConsumerPomArtifactTransformer.java
+++ 
b/maven-core/src/main/java/org/apache/maven/internal/transformation/ConsumerPomArtifactTransformer.java
@@ -62,6 +62,10 @@ public final class ConsumerPomArtifactTransformer {
     private static final String CONSUMER_POM_CLASSIFIER = "consumer";
 
     public void injectTransformedArtifacts(MavenProject project, 
RepositorySystemSession session) throws IOException {
+        if (project.getFile() == null) {
+            // If there is no build POM there is no reason to inject artifacts 
for the consumer POM.
+            return;
+        }
         if (isActive(session)) {
             Path generatedFile;
             String buildDirectory =
diff --git 
a/maven-core/src/test/java/org/apache/maven/internal/transformation/ConsumerPomArtifactTransformerTest.java
 
b/maven-core/src/test/java/org/apache/maven/internal/transformation/ConsumerPomArtifactTransformerTest.java
index c9d46f93f..27c4d15e6 100644
--- 
a/maven-core/src/test/java/org/apache/maven/internal/transformation/ConsumerPomArtifactTransformerTest.java
+++ 
b/maven-core/src/test/java/org/apache/maven/internal/transformation/ConsumerPomArtifactTransformerTest.java
@@ -18,6 +18,7 @@
  */
 package org.apache.maven.internal.transformation;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -25,9 +26,17 @@ import java.nio.file.Paths;
 
 import org.apache.maven.model.Model;
 import org.apache.maven.model.building.TransformerContext;
+import org.apache.maven.project.MavenProject;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.SessionData;
 import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
 import org.xmlunit.assertj.XmlAssert;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
 class ConsumerPomArtifactTransformerTest {
     @Test
     void transform() throws Exception {
@@ -43,6 +52,20 @@ class ConsumerPomArtifactTransformerTest {
         }
     }
 
+    @Test
+    void injectTransformedArtifactsWithoutPomShouldNotInjectAnyArtifacts() 
throws IOException {
+        MavenProject emptyProject = new MavenProject();
+
+        RepositorySystemSession systemSessionMock = 
Mockito.mock(RepositorySystemSession.class);
+        SessionData sessionDataMock = Mockito.mock(SessionData.class);
+        when(systemSessionMock.getData()).thenReturn(sessionDataMock);
+        when(sessionDataMock.get(any())).thenReturn(new 
NoTransformerContext());
+
+        new 
ConsumerPomArtifactTransformer().injectTransformedArtifacts(emptyProject, 
systemSessionMock);
+
+        assertThat(emptyProject.getAttachedArtifacts()).isEmpty();
+    }
+
     private static class NoTransformerContext implements TransformerContext {
         @Override
         public String getUserProperty(String key) {

Reply via email to