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

slachiewicz pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/maven-remote-resources-plugin.git

commit 52662dc138a86f54525407046f7535cdc1436cf1
Author: Elliotte Rusty Harold <[email protected]>
AuthorDate: Sun Aug 2 13:21:25 2026 +0000

    Avoid mutating project artifact versions when building $projects (#268)
---
 .../remote/AbstractProcessRemoteResourcesMojo.java | 15 +++++++++++++-
 .../resources/remote/RemoteResourcesMojoTest.java  | 23 ++++++++++++++++++++++
 2 files changed, 37 insertions(+), 1 deletion(-)

diff --git 
a/src/main/java/org/apache/maven/plugin/resources/remote/AbstractProcessRemoteResourcesMojo.java
 
b/src/main/java/org/apache/maven/plugin/resources/remote/AbstractProcessRemoteResourcesMojo.java
index 571ab49..e4192e3 100644
--- 
a/src/main/java/org/apache/maven/plugin/resources/remote/AbstractProcessRemoteResourcesMojo.java
+++ 
b/src/main/java/org/apache/maven/plugin/resources/remote/AbstractProcessRemoteResourcesMojo.java
@@ -570,7 +570,20 @@ public abstract class AbstractProcessRemoteResourcesMojo 
extends AbstractMojo {
 
         for (Artifact artifact : artifacts) {
             if (artifact.isSnapshot()) {
-                artifact.setVersion(artifact.getBaseVersion());
+                // build a new artifact from the base version instead of 
mutating the shared
+                // artifact instances (e.g. the ones from 
project.getArtifacts())
+                org.apache.maven.artifact.DefaultArtifact snapshotArtifact =
+                        new org.apache.maven.artifact.DefaultArtifact(
+                                artifact.getGroupId(),
+                                artifact.getArtifactId(),
+                                artifact.getBaseVersion(),
+                                artifact.getScope(),
+                                artifact.getType(),
+                                artifact.getClassifier(),
+                                artifact.getArtifactHandler());
+                snapshotArtifact.setFile(artifact.getFile());
+                snapshotArtifact.setResolved(artifact.isResolved());
+                artifact = snapshotArtifact;
             }
 
             getLog().debug("Building project for " + artifact);
diff --git 
a/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
 
b/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
index 60ddac8..ef101de 100644
--- 
a/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
+++ 
b/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
@@ -32,6 +32,7 @@ import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Collections;
 import java.util.EnumSet;
+import java.util.HashMap;
 import java.util.List;
 import java.util.jar.JarOutputStream;
 import java.util.zip.ZipEntry;
@@ -46,6 +47,7 @@ import 
org.apache.maven.execution.DefaultMavenExecutionRequest;
 import org.apache.maven.execution.DefaultMavenExecutionResult;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.resources.remote.stub.ArtifactStub;
 import org.apache.maven.plugin.resources.remote.stub.MavenProjectBuildStub;
 import org.apache.maven.plugin.resources.remote.stub.MavenProjectResourcesStub;
 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
@@ -349,6 +351,27 @@ public class RemoteResourcesMojoTest extends 
AbstractMojoTestCase {
         assertNull(classLoader.getResource("SIMPLE.txt"));
     }
 
+    public void testProjectsDoesNotMutateProjectArtifactVersions() throws 
Exception {
+        final MavenProjectResourcesStub project = 
createTestProject("default-nomutate");
+        final ProcessRemoteResourcesMojo mojo = 
lookupProcessMojoWithDefaultSettings(project);
+
+        setupDefaultProject(project);
+
+        setVariableValueToObject(mojo, "supplementModels", new HashMap<>());
+
+        ArtifactStub snapshotArtifact = new ArtifactStub();
+        snapshotArtifact.setGroupId("org.example");
+        snapshotArtifact.setArtifactId("snapshot-dep");
+        snapshotArtifact.setVersion("1.0-SNAPSHOT");
+
+        project.setArtifacts(Collections.singleton(snapshotArtifact));
+
+        mojo.getProjects();
+
+        assertEquals("1.0-SNAPSHOT", snapshotArtifact.getVersion());
+        assertSame(snapshotArtifact, project.getArtifacts().iterator().next());
+    }
+
     public void testVelocityUTF8() throws Exception {
         final MavenProjectResourcesStub project = 
createTestProject("default-utf8");
         final ProcessRemoteResourcesMojo mojo = 
lookupProcessMojoWithSettings(project, new String[] {"test:test:1.2"});

Reply via email to