You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by el...@apache.org on 2026/08/02 13:21:32 UTC
(maven-remote-resources-plugin) 01/01: Avoid mutating project artifact versions when building $projects (#268)
This is an automated email from the ASF dual-hosted git repository.
elharo pushed a commit to branch fix/issue-268-no-mutation-of-artifacts
in repository https://gitbox.apache.org/repos/asf/maven-remote-resources-plugin.git
commit d08891f44d08aeddffdb78a3d1f5463a40f9b2b8
Author: Elliotte Rusty Harold <el...@ibiblio.org>
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 f57f6d1..5e38bb1 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
@@ -532,7 +532,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 583732b..00a18cb 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
@@ -28,6 +28,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
import java.util.jar.JarOutputStream;
import java.util.zip.ZipEntry;
@@ -41,6 +42,7 @@ import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.execution.DefaultMavenExecutionRequest;
import org.apache.maven.execution.DefaultMavenExecutionResult;
import org.apache.maven.execution.MavenSession;
+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;
@@ -165,6 +167,27 @@ public class RemoteResourcesMojoTest extends AbstractMojoTestCase {
assertTrue(file.exists());
}
+ 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"});