This is an automated email from the ASF dual-hosted git repository. bmarwell pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-jlink-plugin.git
commit d78a0d62d6e38dc5de3b041d83542ce832a6f378 Author: Ndacyayisenga-droid <ndacyayin...@gmail.com> AuthorDate: Tue Mar 4 15:32:12 2025 +0300 Skip POM dependencies when assembling jlink classpath --- .../org/apache/maven/plugins/jlink/JLinkMojo.java | 10 ++++++--- .../apache/maven/plugins/jlink/JLinkMojoTest.java | 25 ++++++++++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/apache/maven/plugins/jlink/JLinkMojo.java b/src/main/java/org/apache/maven/plugins/jlink/JLinkMojo.java index 915d5b7..2275e8e 100644 --- a/src/main/java/org/apache/maven/plugins/jlink/JLinkMojo.java +++ b/src/main/java/org/apache/maven/plugins/jlink/JLinkMojo.java @@ -464,12 +464,16 @@ public class JLinkMojo extends AbstractJLinkMojo { } } - private List<File> getCompileClasspathElements(MavenProject project) { + List<File> getCompileClasspathElements(MavenProject project) { List<File> list = new ArrayList<>(project.getArtifacts().size() + 1); for (Artifact a : project.getArtifacts()) { - getLog().debug("Artifact: " + a.getGroupId() + ":" + a.getArtifactId() + ":" + a.getVersion()); - list.add(a.getFile()); + boolean skip = "pom".equals(a.getType()); + getLog().debug("Adding artifact: " + a.getGroupId() + ":" + a.getArtifactId() + ":" + a.getVersion() + + (skip ? " (skipping)" : "")); + if (!skip) { + list.add(a.getFile()); + } } return list; } diff --git a/src/test/java/org/apache/maven/plugins/jlink/JLinkMojoTest.java b/src/test/java/org/apache/maven/plugins/jlink/JLinkMojoTest.java index 5fe6fce..576ef76 100644 --- a/src/test/java/org/apache/maven/plugins/jlink/JLinkMojoTest.java +++ b/src/test/java/org/apache/maven/plugins/jlink/JLinkMojoTest.java @@ -21,15 +21,20 @@ package org.apache.maven.plugins.jlink; import java.io.File; import java.lang.reflect.Field; import java.util.List; +import java.util.Set; +import org.apache.maven.artifact.Artifact; +import org.apache.maven.project.MavenProject; import org.apache.maven.shared.utils.cli.Commandline; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledOnOs; import org.junit.jupiter.api.condition.EnabledOnOs; import org.junit.jupiter.api.condition.OS; +import org.mockito.Mockito; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; public class JLinkMojoTest { @@ -77,4 +82,24 @@ public class JLinkMojoTest { .contains( "\\path\\to\\jlink \"--strip-debug\" \"--module-path\" \"foo;bar\" \"--add-modules\" \"mvn,jlink"); } + + @Test + void getCompileClasspathElements() throws Exception { + // Given + MavenProject project = Mockito.mock(MavenProject.class); + + Artifact pomArtifact = Mockito.mock(Artifact.class); + when(pomArtifact.getType()).thenReturn("pom"); + + Artifact jarArtifact = Mockito.mock(Artifact.class); + when(jarArtifact.getType()).thenReturn("jar"); + when(jarArtifact.getFile()).thenReturn(new File("some.jar")); + + when(project.getArtifacts()).thenReturn(Set.of(pomArtifact, jarArtifact)); + + List<File> classpathElements = mojo.getCompileClasspathElements(project); + + // Then + assertThat(classpathElements).containsExactly(new File("some.jar")); + } }