diff --git a/src/it/buildinfo-skip-install-deploy/modSkipModule/pom.xml b/src/it/buildinfo-skip-install-deploy/modSkipModule/pom.xml
new file mode 100644
index 0000000..4cf60b8
--- /dev/null
+++ b/src/it/buildinfo-skip-install-deploy/modSkipModule/pom.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+ 4.0.0
+
+
+ org.apache.maven.plugins.it
+ multi
+ 1.0-SNAPSHOT
+
+ multi-mod-skip-module
+ multi-module module that will be skipped by configuring artifact plugin with skipModules
+ then should not be added to buildinfo
+
diff --git a/src/it/buildinfo-skip-install-deploy/pom.xml b/src/it/buildinfo-skip-install-deploy/pom.xml
index f0a1092..43108f7 100644
--- a/src/it/buildinfo-skip-install-deploy/pom.xml
+++ b/src/it/buildinfo-skip-install-deploy/pom.xml
@@ -50,6 +50,7 @@
modSkipInstall
modSkipDeploy
+ modSkipModule
modB
modA
modSkipAtEnd
@@ -66,6 +67,11 @@
buildinfo
+
+
+ */*-module
+
+
diff --git a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java
index c3a485f..33c4b27 100644
--- a/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java
+++ b/src/main/java/org/apache/maven/plugins/artifact/buildinfo/AbstractBuildinfoMojo.java
@@ -24,11 +24,12 @@
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
+import java.nio.file.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import org.apache.maven.archiver.MavenArchiver;
import org.apache.maven.artifact.Artifact;
@@ -90,6 +91,15 @@ public abstract class AbstractBuildinfoMojo extends AbstractMojo {
@Parameter(property = "buildinfo.detect.skip", defaultValue = "true")
private boolean detectSkip;
+ /**
+ * Avoid taking fingerprints for modules specified as glob matching against ${groupId}/${artifactId}
.
+ * @since 3.5.0
+ */
+ @Parameter
+ private List skipModules;
+
+ private List skipModulesMatcher = null;
+
/**
* Makes the generated {@code .buildinfo} file reproducible, by dropping detailed environment recording: OS will be
* recorded as "Windows" or "Unix", JVM version as major version only.
@@ -274,7 +284,20 @@ private MavenProject getLastProject() {
}
private boolean isSkip(MavenProject project) {
- return detectSkip && PluginUtil.isSkip(project);
+ // manual/configured module skip
+ boolean skipModule = false;
+ if (skipModules != null && !skipModules.isEmpty()) {
+ if (skipModulesMatcher == null) {
+ FileSystem fs = FileSystems.getDefault();
+ skipModulesMatcher = skipModules.stream()
+ .map(i -> fs.getPathMatcher("glob:" + i))
+ .collect(Collectors.toList());
+ }
+ Path path = Paths.get(project.getGroupId() + '/' + project.getArtifactId());
+ skipModule = skipModulesMatcher.stream().anyMatch(m -> m.matches(path));
+ }
+ // detected skip
+ return skipModule || (detectSkip && PluginUtil.isSkip(project));
}
private Toolchain getToolchain() {