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..8182edd 100644 --- a/pom.xml +++ b/pom.xml @@ -78,12 +78,12 @@ under the License. 17 - 4.0.0-beta-3 + 4.0.0-rc-5 6.0.0 - 4.0.0-beta-1 - 4.0.0-beta-1 - 4.0.0-beta-1 + 4.0.0-beta-5 + 4.0.0-beta-2 + 4.0.0-beta-4 5.20.0 4.10.4 ${mavenPluginPluginVersion} @@ -128,13 +128,13 @@ under the License. org.apache.maven - maven-api-meta + maven-api-annotations ${mavenVersion} provided - org.apache.maven + org.apache.maven.shared maven-archiver ${mavenArchiverVersion} @@ -162,7 +162,13 @@ under the License. org.apache.maven - maven-api-impl + maven-xml + ${mavenVersion} + test + + + org.apache.maven + maven-impl ${mavenVersion} test 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..087b750 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(), @@ -398,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; } @@ -416,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/SourceJarNoForkMojo.java b/src/main/java/org/apache/maven/plugins/source/SourceJarNoForkMojo.java index 8495998..e7b29fe 100644 --- a/src/main/java/org/apache/maven/plugins/source/SourceJarNoForkMojo.java +++ b/src/main/java/org/apache/maven/plugins/source/SourceJarNoForkMojo.java @@ -47,7 +47,10 @@ 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(); } /** @@ -58,7 +61,7 @@ protected List getResources(Project p) { 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 7763e83..0e252c3 100644 --- a/src/main/java/org/apache/maven/plugins/source/TestSourceJarNoForkMojo.java +++ b/src/main/java/org/apache/maven/plugins/source/TestSourceJarNoForkMojo.java @@ -47,7 +47,10 @@ public class TestSourceJarNoForkMojo extends AbstractSourceJarMojo { * {@inheritDoc} */ protected List getSources(Project p) { - return projectManager.getCompileSourceRoots(p, ProjectScope.TEST); + return projectManager + .getEnabledSourceRoots(p, ProjectScope.TEST, p.getLanguage()) + .map(sourceRoot -> sourceRoot.directory()) + .toList(); } /** @@ -58,7 +61,7 @@ protected List getResources(Project p) { 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 faed337..1ec997d 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,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.internal.impl.InternalSession; +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; @@ -47,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-"; @@ -182,18 +191,17 @@ 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); + }); 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..29fb1b6 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,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.internal.impl.InternalSession; +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; @@ -47,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") @@ -138,18 +147,17 @@ 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.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().getTestSourceDirectory())); + + return Stream.of(sourceRoot); + }); return session; } }