From f4c082656d0ff47a2a8645049b90bfb60248f707 Mon Sep 17 00:00:00 2001 From: Sandra Parsick Date: Tue, 6 Jan 2026 10:45:56 +0100 Subject: [PATCH 1/6] chore: update maven to 4.0.0-rc-5 - update deps - related to issue #249 Signed-off-by: Sandra Parsick --- .github/workflows/maven-verify.yml | 2 +- pom.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/maven-verify.yml b/.github/workflows/maven-verify.yml index eff880a..1d93d8d 100644 --- a/.github/workflows/maven-verify.yml +++ b/.github/workflows/maven-verify.yml @@ -27,4 +27,4 @@ jobs: uses: apache/maven-gh-actions-shared/.github/workflows/maven-verify.yml@v4 with: maven4-build: true - maven4-version: '4.0.0-beta-3' # same as in project + maven4-version: '4.0.0-rc-5' # same as in project diff --git a/pom.xml b/pom.xml index b056cc3..0d6ad2d 100644 --- a/pom.xml +++ b/pom.xml @@ -78,7 +78,7 @@ under the License. 17 - 4.0.0-beta-3 + 4.0.0-rc-5 6.0.0 4.0.0-beta-1 @@ -128,7 +128,7 @@ under the License. org.apache.maven - maven-api-meta + maven-api-annotations ${mavenVersion} provided @@ -162,7 +162,7 @@ under the License. org.apache.maven - maven-api-impl + maven-impl ${mavenVersion} test From 5ccb6dce3210838906e98c886012c52d5e296a28 Mon Sep 17 00:00:00 2001 From: Sandra Parsick Date: Tue, 6 Jan 2026 13:33:00 +0100 Subject: [PATCH 2/6] chore: update maven to 4.0.0-rc-5 - update plugin api - update plugin test tool - related to issue #249 Signed-off-by: Sandra Parsick --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 0d6ad2d..ce37a8e 100644 --- a/pom.xml +++ b/pom.xml @@ -82,8 +82,8 @@ under the License. 6.0.0 4.0.0-beta-1 - 4.0.0-beta-1 - 4.0.0-beta-1 + 4.0.0-beta-2 + 4.0.0-beta-4 5.20.0 4.10.4 ${mavenPluginPluginVersion} From 84b68eb7db2997db474e2fc8c05f095d99e27fa6 Mon Sep 17 00:00:00 2001 From: Sandra Parsick Date: Tue, 6 Jan 2026 14:15:19 +0100 Subject: [PATCH 3/6] chore: update maven to 4.0.0-rc-5 - fix compiler error - commented resource logic part Signed-off-by: Sandra Parsick --- pom.xml | 10 ++++-- .../plugins/source/AbstractSourceJarMojo.java | 7 ++-- .../plugins/source/SourceJarNoForkMojo.java | 14 +++++--- .../source/TestSourceJarNoForkMojo.java | 13 ++++--- .../plugins/source/SourceJarMojoTest.java | 36 +++++++++++-------- .../plugins/source/TestSourceJarMojoTest.java | 36 +++++++++++-------- 6 files changed, 73 insertions(+), 43 deletions(-) diff --git a/pom.xml b/pom.xml index ce37a8e..8182edd 100644 --- a/pom.xml +++ b/pom.xml @@ -81,7 +81,7 @@ under the License. 4.0.0-rc-5 6.0.0 - 4.0.0-beta-1 + 4.0.0-beta-5 4.0.0-beta-2 4.0.0-beta-4 5.20.0 @@ -134,7 +134,7 @@ under the License. - org.apache.maven + org.apache.maven.shared maven-archiver ${mavenArchiverVersion} @@ -160,6 +160,12 @@ under the License. ${mavenVersion} test + + org.apache.maven + maven-xml + ${mavenVersion} + test + org.apache.maven maven-impl diff --git a/src/main/java/org/apache/maven/plugins/source/AbstractSourceJarMojo.java b/src/main/java/org/apache/maven/plugins/source/AbstractSourceJarMojo.java index d8f1747..3784c60 100644 --- a/src/main/java/org/apache/maven/plugins/source/AbstractSourceJarMojo.java +++ b/src/main/java/org/apache/maven/plugins/source/AbstractSourceJarMojo.java @@ -29,6 +29,7 @@ import java.util.Objects; import org.apache.maven.api.Artifact; +import org.apache.maven.api.ProducedArtifact; import org.apache.maven.api.Project; import org.apache.maven.api.Session; import org.apache.maven.api.Type; @@ -40,8 +41,8 @@ import org.apache.maven.api.plugin.annotations.Parameter; import org.apache.maven.api.services.ArtifactManager; import org.apache.maven.api.services.ProjectManager; -import org.apache.maven.archiver.MavenArchiveConfiguration; -import org.apache.maven.archiver.MavenArchiver; +import org.apache.maven.shared.archiver.MavenArchiveConfiguration; +import org.apache.maven.shared.archiver.MavenArchiver; import org.codehaus.plexus.archiver.Archiver; import org.codehaus.plexus.archiver.ArchiverException; import org.codehaus.plexus.archiver.jar.JarArchiver; @@ -321,7 +322,7 @@ protected void packageSources(List theProjects) throws MojoException { } if (attach) { - Artifact artifact = session.createArtifact( + ProducedArtifact artifact = session.createProducedArtifact( project.getGroupId(), project.getArtifactId(), project.getVersion(), diff --git a/src/main/java/org/apache/maven/plugins/source/SourceJarNoForkMojo.java b/src/main/java/org/apache/maven/plugins/source/SourceJarNoForkMojo.java index 8495998..ba6b4d0 100644 --- a/src/main/java/org/apache/maven/plugins/source/SourceJarNoForkMojo.java +++ b/src/main/java/org/apache/maven/plugins/source/SourceJarNoForkMojo.java @@ -47,18 +47,22 @@ public class SourceJarNoForkMojo extends AbstractSourceJarMojo { * {@inheritDoc} */ protected List getSources(Project p) { - return projectManager.getCompileSourceRoots(p, ProjectScope.MAIN); + return projectManager + .getEnabledSourceRoots(p, ProjectScope.MAIN, p.getLanguage()) + .map(sourceRoot -> sourceRoot.directory()) + .toList(); + // return projectManager.getCompileSourceRoots(p, ProjectScope.MAIN); } /** * {@inheritDoc} */ protected List getResources(Project p) { - if (excludeResources) { - return Collections.emptyList(); - } + // if (excludeResources) { + return Collections.emptyList(); + // } - return projectManager.getResources(p, ProjectScope.MAIN); + // return projectManager.getResources(p, ProjectScope.MAIN); } /** diff --git a/src/main/java/org/apache/maven/plugins/source/TestSourceJarNoForkMojo.java b/src/main/java/org/apache/maven/plugins/source/TestSourceJarNoForkMojo.java index 7763e83..aa6d238 100644 --- a/src/main/java/org/apache/maven/plugins/source/TestSourceJarNoForkMojo.java +++ b/src/main/java/org/apache/maven/plugins/source/TestSourceJarNoForkMojo.java @@ -47,18 +47,21 @@ public class TestSourceJarNoForkMojo extends AbstractSourceJarMojo { * {@inheritDoc} */ protected List getSources(Project p) { - return projectManager.getCompileSourceRoots(p, ProjectScope.TEST); + return projectManager + .getEnabledSourceRoots(p, ProjectScope.TEST, null) + .map(sourceRoot -> sourceRoot.directory()) + .toList(); } /** * {@inheritDoc} */ protected List getResources(Project p) { - if (excludeResources) { - return Collections.emptyList(); - } + // if (excludeResources) { + return Collections.emptyList(); + // } - return projectManager.getResources(p, ProjectScope.TEST); + // return projectManager.getResources(p, ProjectScope.TEST); } /** diff --git a/src/test/java/org/apache/maven/plugins/source/SourceJarMojoTest.java b/src/test/java/org/apache/maven/plugins/source/SourceJarMojoTest.java index faed337..9487439 100644 --- a/src/test/java/org/apache/maven/plugins/source/SourceJarMojoTest.java +++ b/src/test/java/org/apache/maven/plugins/source/SourceJarMojoTest.java @@ -20,8 +20,9 @@ import java.io.File; import java.nio.file.Paths; -import java.util.Collections; +import java.util.stream.Stream; +import org.apache.maven.api.Language; import org.apache.maven.api.Project; import org.apache.maven.api.ProjectScope; import org.apache.maven.api.di.Provides; @@ -31,7 +32,8 @@ import org.apache.maven.api.plugin.testing.MojoTest; import org.apache.maven.api.plugin.testing.stubs.SessionMock; import org.apache.maven.api.services.ProjectManager; -import org.apache.maven.internal.impl.InternalSession; +import org.apache.maven.impl.DefaultSourceRoot; +import org.apache.maven.impl.InternalSession; import org.junit.jupiter.api.Test; import static org.apache.maven.api.plugin.testing.MojoExtension.getBasedir; @@ -182,18 +184,24 @@ InternalSession createSession() { InternalSession session = SessionMock.getMockSession("target/local-repo"); ProjectManager projectManager = mock(ProjectManager.class); when(session.getService(ProjectManager.class)).thenReturn(projectManager); - when(projectManager.getCompileSourceRoots(any(), eq(ProjectScope.MAIN))).thenAnswer(iom -> { - Project p = iom.getArgument(0, Project.class); - return Collections.singletonList( - Paths.get(getBasedir()).resolve(p.getModel().getBuild().getSourceDirectory())); - }); - when(projectManager.getResources(any(), eq(ProjectScope.MAIN))).thenAnswer(iom -> { - Project p = iom.getArgument(0, Project.class); - return p.getBuild().getResources().stream() - .map(r -> r.withDirectory( - Paths.get(getBasedir()).resolve(r.getDirectory()).toString())) - .toList(); - }); + when(projectManager.getEnabledSourceRoots(any(), eq(ProjectScope.MAIN), any())) + .thenAnswer(iom -> { + Project p = iom.getArgument(0, Project.class); + DefaultSourceRoot sourceRoot = new DefaultSourceRoot( + ProjectScope.MAIN, + Language.JAVA_FAMILY, + Paths.get(getBasedir()) + .resolve(p.getModel().getBuild().getSourceDirectory())); + + return Stream.of(sourceRoot); + }); + // when(projectManager.getResources(any(), eq(ProjectScope.MAIN))).thenAnswer(iom -> { + // Project p = iom.getArgument(0, Project.class); + // return p.getBuild().getResources().stream() + // .map(r -> r.withDirectory( + // Paths.get(getBasedir()).resolve(r.getDirectory()).toString())) + // .toList(); + // }); return session; } } diff --git a/src/test/java/org/apache/maven/plugins/source/TestSourceJarMojoTest.java b/src/test/java/org/apache/maven/plugins/source/TestSourceJarMojoTest.java index e0bc5fe..4df7103 100644 --- a/src/test/java/org/apache/maven/plugins/source/TestSourceJarMojoTest.java +++ b/src/test/java/org/apache/maven/plugins/source/TestSourceJarMojoTest.java @@ -20,8 +20,9 @@ import java.io.File; import java.nio.file.Paths; -import java.util.Collections; +import java.util.stream.Stream; +import org.apache.maven.api.Language; import org.apache.maven.api.Project; import org.apache.maven.api.ProjectScope; import org.apache.maven.api.di.Provides; @@ -31,7 +32,8 @@ import org.apache.maven.api.plugin.testing.MojoTest; import org.apache.maven.api.plugin.testing.stubs.SessionMock; import org.apache.maven.api.services.ProjectManager; -import org.apache.maven.internal.impl.InternalSession; +import org.apache.maven.impl.DefaultSourceRoot; +import org.apache.maven.impl.InternalSession; import org.junit.jupiter.api.Test; import static org.apache.maven.api.plugin.testing.MojoExtension.getBasedir; @@ -138,18 +140,24 @@ InternalSession createSession() { InternalSession session = SessionMock.getMockSession("target/local-repo"); ProjectManager projectManager = mock(ProjectManager.class); when(session.getService(ProjectManager.class)).thenReturn(projectManager); - when(projectManager.getCompileSourceRoots(any(), eq(ProjectScope.TEST))).thenAnswer(iom -> { - Project p = iom.getArgument(0, Project.class); - return Collections.singletonList( - Paths.get(getBasedir()).resolve(p.getModel().getBuild().getTestSourceDirectory())); - }); - when(projectManager.getResources(any(), eq(ProjectScope.TEST))).thenAnswer(iom -> { - Project p = iom.getArgument(0, Project.class); - return p.getBuild().getTestResources().stream() - .map(r -> r.withDirectory( - Paths.get(getBasedir()).resolve(r.getDirectory()).toString())) - .toList(); - }); + when(projectManager.getEnabledSourceRoots(any(), eq(ProjectScope.MAIN), any())) + .thenAnswer(iom -> { + Project p = iom.getArgument(0, Project.class); + DefaultSourceRoot sourceRoot = new DefaultSourceRoot( + ProjectScope.MAIN, + Language.JAVA_FAMILY, + Paths.get(getBasedir()) + .resolve(p.getModel().getBuild().getSourceDirectory())); + + return Stream.of(sourceRoot); + }); + // when(projectManager.getResources(any(), eq(ProjectScope.TEST))).thenAnswer(iom -> { + // Project p = iom.getArgument(0, Project.class); + // return p.getBuild().getTestResources().stream() + // .map(r -> r.withDirectory( + // Paths.get(getBasedir()).resolve(r.getDirectory()).toString())) + // .toList(); + // }); return session; } } From df999554756a71236d4241da3453260351607741 Mon Sep 17 00:00:00 2001 From: Sandra Parsick Date: Tue, 6 Jan 2026 14:40:10 +0100 Subject: [PATCH 4/6] chore: update maven to 4.0.0-rc-5 - add replacment for resource logic Signed-off-by: Sandra Parsick --- .../apache/maven/plugins/source/SourceJarNoForkMojo.java | 9 ++++----- .../maven/plugins/source/TestSourceJarNoForkMojo.java | 8 ++++---- .../apache/maven/plugins/source/SourceJarMojoTest.java | 7 ------- 3 files changed, 8 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/apache/maven/plugins/source/SourceJarNoForkMojo.java b/src/main/java/org/apache/maven/plugins/source/SourceJarNoForkMojo.java index ba6b4d0..e7b29fe 100644 --- a/src/main/java/org/apache/maven/plugins/source/SourceJarNoForkMojo.java +++ b/src/main/java/org/apache/maven/plugins/source/SourceJarNoForkMojo.java @@ -51,18 +51,17 @@ protected List getSources(Project p) { .getEnabledSourceRoots(p, ProjectScope.MAIN, p.getLanguage()) .map(sourceRoot -> sourceRoot.directory()) .toList(); - // return projectManager.getCompileSourceRoots(p, ProjectScope.MAIN); } /** * {@inheritDoc} */ protected List getResources(Project p) { - // if (excludeResources) { - return Collections.emptyList(); - // } + if (excludeResources) { + return Collections.emptyList(); + } - // return projectManager.getResources(p, ProjectScope.MAIN); + return p.getBuild().getResources(); } /** diff --git a/src/main/java/org/apache/maven/plugins/source/TestSourceJarNoForkMojo.java b/src/main/java/org/apache/maven/plugins/source/TestSourceJarNoForkMojo.java index aa6d238..0879534 100644 --- a/src/main/java/org/apache/maven/plugins/source/TestSourceJarNoForkMojo.java +++ b/src/main/java/org/apache/maven/plugins/source/TestSourceJarNoForkMojo.java @@ -57,11 +57,11 @@ protected List getSources(Project p) { * {@inheritDoc} */ protected List getResources(Project p) { - // if (excludeResources) { - return Collections.emptyList(); - // } + if (excludeResources) { + return Collections.emptyList(); + } - // return projectManager.getResources(p, ProjectScope.TEST); + return p.getBuild().getTestResources(); } /** diff --git a/src/test/java/org/apache/maven/plugins/source/SourceJarMojoTest.java b/src/test/java/org/apache/maven/plugins/source/SourceJarMojoTest.java index 9487439..ceea34c 100644 --- a/src/test/java/org/apache/maven/plugins/source/SourceJarMojoTest.java +++ b/src/test/java/org/apache/maven/plugins/source/SourceJarMojoTest.java @@ -195,13 +195,6 @@ InternalSession createSession() { return Stream.of(sourceRoot); }); - // when(projectManager.getResources(any(), eq(ProjectScope.MAIN))).thenAnswer(iom -> { - // Project p = iom.getArgument(0, Project.class); - // return p.getBuild().getResources().stream() - // .map(r -> r.withDirectory( - // Paths.get(getBasedir()).resolve(r.getDirectory()).toString())) - // .toList(); - // }); return session; } } From bf12c81802ab37425cee1bb681e5eb090246242e Mon Sep 17 00:00:00 2001 From: Sandra Parsick Date: Tue, 6 Jan 2026 17:07:32 +0100 Subject: [PATCH 5/6] chore: update maven to 4.0.0-rc-5 - add replacment for resource logic - adjust mocks for tests Signed-off-by: Sandra Parsick --- .../maven/plugins/source/AbstractSourceJarMojo.java | 7 ++++--- .../maven/plugins/source/TestSourceJarNoForkMojo.java | 2 +- .../maven/plugins/source/TestSourceJarMojoTest.java | 11 ++--------- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/main/java/org/apache/maven/plugins/source/AbstractSourceJarMojo.java b/src/main/java/org/apache/maven/plugins/source/AbstractSourceJarMojo.java index 3784c60..087b750 100644 --- a/src/main/java/org/apache/maven/plugins/source/AbstractSourceJarMojo.java +++ b/src/main/java/org/apache/maven/plugins/source/AbstractSourceJarMojo.java @@ -399,8 +399,9 @@ protected void archiveProjectContent(Project project, Archiver archiver) throws for (Resource resource : getResources(project)) { Path sourceDirectory = Paths.get(resource.getDirectory()); + Path absoluteSourceDirectory = project.getBasedir().resolve(sourceDirectory); - if (!Files.exists(sourceDirectory)) { + if (!Files.exists(absoluteSourceDirectory)) { continue; } @@ -417,9 +418,9 @@ protected void archiveProjectContent(Project project, Archiver archiver) throws if (!targetPath.trim().endsWith("/")) { targetPath += "/"; } - addDirectory(archiver, sourceDirectory, targetPath, combinedIncludes, combinedExcludes); + addDirectory(archiver, absoluteSourceDirectory, targetPath, combinedIncludes, combinedExcludes); } else { - addDirectory(archiver, sourceDirectory, combinedIncludes, combinedExcludes); + addDirectory(archiver, absoluteSourceDirectory, combinedIncludes, combinedExcludes); } } } diff --git a/src/main/java/org/apache/maven/plugins/source/TestSourceJarNoForkMojo.java b/src/main/java/org/apache/maven/plugins/source/TestSourceJarNoForkMojo.java index 0879534..0e252c3 100644 --- a/src/main/java/org/apache/maven/plugins/source/TestSourceJarNoForkMojo.java +++ b/src/main/java/org/apache/maven/plugins/source/TestSourceJarNoForkMojo.java @@ -48,7 +48,7 @@ public class TestSourceJarNoForkMojo extends AbstractSourceJarMojo { */ protected List getSources(Project p) { return projectManager - .getEnabledSourceRoots(p, ProjectScope.TEST, null) + .getEnabledSourceRoots(p, ProjectScope.TEST, p.getLanguage()) .map(sourceRoot -> sourceRoot.directory()) .toList(); } diff --git a/src/test/java/org/apache/maven/plugins/source/TestSourceJarMojoTest.java b/src/test/java/org/apache/maven/plugins/source/TestSourceJarMojoTest.java index 4df7103..ad06d69 100644 --- a/src/test/java/org/apache/maven/plugins/source/TestSourceJarMojoTest.java +++ b/src/test/java/org/apache/maven/plugins/source/TestSourceJarMojoTest.java @@ -140,24 +140,17 @@ InternalSession createSession() { InternalSession session = SessionMock.getMockSession("target/local-repo"); ProjectManager projectManager = mock(ProjectManager.class); when(session.getService(ProjectManager.class)).thenReturn(projectManager); - when(projectManager.getEnabledSourceRoots(any(), eq(ProjectScope.MAIN), any())) + when(projectManager.getEnabledSourceRoots(any(), eq(ProjectScope.TEST), any())) .thenAnswer(iom -> { Project p = iom.getArgument(0, Project.class); DefaultSourceRoot sourceRoot = new DefaultSourceRoot( ProjectScope.MAIN, Language.JAVA_FAMILY, Paths.get(getBasedir()) - .resolve(p.getModel().getBuild().getSourceDirectory())); + .resolve(p.getModel().getBuild().getTestSourceDirectory())); return Stream.of(sourceRoot); }); - // when(projectManager.getResources(any(), eq(ProjectScope.TEST))).thenAnswer(iom -> { - // Project p = iom.getArgument(0, Project.class); - // return p.getBuild().getTestResources().stream() - // .map(r -> r.withDirectory( - // Paths.get(getBasedir()).resolve(r.getDirectory()).toString())) - // .toList(); - // }); return session; } } From f378da0a7ebbf64d06745ac39d1f1a631a630f43 Mon Sep 17 00:00:00 2001 From: Sandra Parsick Date: Wed, 7 Jan 2026 11:42:24 +0100 Subject: [PATCH 6/6] chore: update maven to 4.0.0-rc-5 - fix tests; root cause: ACCESSIBLE_FIELD_CACHE of EnhancedCompositeBeanHelper had invalid information. Clear cache after every class helps Signed-off-by: Sandra Parsick --- .../org/apache/maven/plugins/source/SourceJarMojoTest.java | 7 +++++++ .../apache/maven/plugins/source/TestSourceJarMojoTest.java | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/test/java/org/apache/maven/plugins/source/SourceJarMojoTest.java b/src/test/java/org/apache/maven/plugins/source/SourceJarMojoTest.java index ceea34c..1ec997d 100644 --- a/src/test/java/org/apache/maven/plugins/source/SourceJarMojoTest.java +++ b/src/test/java/org/apache/maven/plugins/source/SourceJarMojoTest.java @@ -32,8 +32,10 @@ import org.apache.maven.api.plugin.testing.MojoTest; import org.apache.maven.api.plugin.testing.stubs.SessionMock; import org.apache.maven.api.services.ProjectManager; +import org.apache.maven.configuration.internal.EnhancedCompositeBeanHelper; import org.apache.maven.impl.DefaultSourceRoot; import org.apache.maven.impl.InternalSession; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Test; import static org.apache.maven.api.plugin.testing.MojoExtension.getBasedir; @@ -49,6 +51,11 @@ @MojoTest public class SourceJarMojoTest extends AbstractSourcePluginTestCase { + @AfterAll + static void cleanUp() { + EnhancedCompositeBeanHelper.clearCaches(); + } + private String[] addMavenDescriptor(String project, String... listOfElements) { final String metainf = "META-INF/"; final String mavensource = "maven/source/maven-source-plugin-test-"; diff --git a/src/test/java/org/apache/maven/plugins/source/TestSourceJarMojoTest.java b/src/test/java/org/apache/maven/plugins/source/TestSourceJarMojoTest.java index ad06d69..29fb1b6 100644 --- a/src/test/java/org/apache/maven/plugins/source/TestSourceJarMojoTest.java +++ b/src/test/java/org/apache/maven/plugins/source/TestSourceJarMojoTest.java @@ -32,8 +32,10 @@ import org.apache.maven.api.plugin.testing.MojoTest; import org.apache.maven.api.plugin.testing.stubs.SessionMock; import org.apache.maven.api.services.ProjectManager; +import org.apache.maven.configuration.internal.EnhancedCompositeBeanHelper; import org.apache.maven.impl.DefaultSourceRoot; import org.apache.maven.impl.InternalSession; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Test; import static org.apache.maven.api.plugin.testing.MojoExtension.getBasedir; @@ -49,6 +51,11 @@ @MojoTest public class TestSourceJarMojoTest extends AbstractSourcePluginTestCase { + @AfterAll + static void cleanUp() { + EnhancedCompositeBeanHelper.clearCaches(); + } + @Test @InjectMojo(goal = "test-jar") @Basedir("${basedir}/target/test-classes/unit/project-001")