adding option skipIfNoActivator to fatjar/metadata mojos
diff --git a/winegrower-extension/winegrower-build/winegrower-build-common/src/main/java/org/apache/winegrower/extension/build/common/FatJar.java b/winegrower-extension/winegrower-build/winegrower-build-common/src/main/java/org/apache/winegrower/extension/build/common/FatJar.java
index 7fe34a4..e7eb4b8 100644
--- a/winegrower-extension/winegrower-build/winegrower-build-common/src/main/java/org/apache/winegrower/extension/build/common/FatJar.java
+++ b/winegrower-extension/winegrower-build/winegrower-build-common/src/main/java/org/apache/winegrower/extension/build/common/FatJar.java
@@ -43,7 +43,7 @@
try (final JarOutputStream outputStream = new JarOutputStream(
new BufferedOutputStream(new FileOutputStream(configuration.output)))) {
- final MetadataBuilder metadataBuilder = new MetadataBuilder();
+ final MetadataBuilder metadataBuilder = new MetadataBuilder(configuration.skipIfNoActivator);
byte[] buffer = new byte[8192];
final Set<String> alreadyAdded = new HashSet<>();
configuration.jars.forEach(shadedJar -> {
@@ -92,10 +92,13 @@
public static class Configuration {
private final Collection<File> jars;
private final File output;
+ private final boolean skipIfNoActivator;
- public Configuration(final Collection<File> jars, final File output) {
+ public Configuration(final Collection<File> jars, final File output,
+ final boolean skipIfNoActivator) {
this.jars = jars;
this.output = output;
+ this.skipIfNoActivator = skipIfNoActivator;
}
}
}
diff --git a/winegrower-extension/winegrower-build/winegrower-build-common/src/main/java/org/apache/winegrower/extension/build/common/MetadataBuilder.java b/winegrower-extension/winegrower-build/winegrower-build-common/src/main/java/org/apache/winegrower/extension/build/common/MetadataBuilder.java
index 9191cdc..a4dfcb6 100644
--- a/winegrower-extension/winegrower-build/winegrower-build-common/src/main/java/org/apache/winegrower/extension/build/common/MetadataBuilder.java
+++ b/winegrower-extension/winegrower-build/winegrower-build-common/src/main/java/org/apache/winegrower/extension/build/common/MetadataBuilder.java
@@ -25,12 +25,18 @@
import java.util.jar.Manifest;
public class MetadataBuilder {
+ private final boolean skipIfNoActivator;
+
private final Properties manifests = new Properties();
private final Properties index = new Properties();
private String currentJar;
private List<String> files;
+ public MetadataBuilder(final boolean skipIfNoActivator) {
+ this.skipIfNoActivator = skipIfNoActivator;
+ }
+
public Map<String, Properties> getMetadata() {
final HashMap<String, Properties> meta = new HashMap<>();
meta.put("index", index);
@@ -40,6 +46,9 @@
public void onJar(final String jarName, final JarInputStream jarInputStream) {
final Manifest manifest = jarInputStream.getManifest();
+ if (skipIfNoActivator && (manifest == null || manifest.getMainAttributes().getValue("Bundle-Activator") == null)) {
+ return;
+ }
if (manifest != null) {
try (final ByteArrayOutputStream manifestStream = new ByteArrayOutputStream()) {
manifest.write(manifestStream);
@@ -54,10 +63,15 @@
}
public void onFile(final String name) {
- files.add(name);
+ if (files != null) {
+ files.add(name);
+ }
}
public void afterJar() {
+ if (files == null) {
+ return;
+ }
index.put(currentJar, String.join(",", files));
currentJar = null;
files = null;
diff --git a/winegrower-extension/winegrower-build/winegrower-build-common/src/test/java/org/apache/winegrower/extension/build/common/FatJarTest.java b/winegrower-extension/winegrower-build/winegrower-build-common/src/test/java/org/apache/winegrower/extension/build/common/FatJarTest.java
index f31cb88..861bdeb 100644
--- a/winegrower-extension/winegrower-build/winegrower-build-common/src/test/java/org/apache/winegrower/extension/build/common/FatJarTest.java
+++ b/winegrower-extension/winegrower-build/winegrower-build-common/src/test/java/org/apache/winegrower/extension/build/common/FatJarTest.java
@@ -42,7 +42,8 @@
}
new FatJar(new FatJar.Configuration(
asList(junitApi, osgiCore),
- output
+ output,
+ false
)).run();
assertTrue(output.exists());
final List<String> entries;
diff --git a/winegrower-extension/winegrower-build/winegrower-maven-plugin/src/main/asciidoc/index.adoc b/winegrower-extension/winegrower-build/winegrower-maven-plugin/src/main/asciidoc/index.adoc
index ecceb10..e09a7ae 100644
--- a/winegrower-extension/winegrower-build/winegrower-maven-plugin/src/main/asciidoc/index.adoc
+++ b/winegrower-extension/winegrower-build/winegrower-maven-plugin/src/main/asciidoc/index.adoc
@@ -79,6 +79,8 @@
|classifier|String|winegrower.classifier|fatjar|The classifier to use if the produced artifact is attached.
|includeScopes|Collection<String>|winegrower.includeScopes|provided,compile,runtime|The scopes included in the produced artifact.
|output|File|winegrower.output|${project.build.directory}/${project.artifactId}-fatjar.jar|Where the fatjar is produced.
+|excludeArtifacts|String|winegrower.excludeArtifacts|-|either artifactId or groupId:artifactId of the artifacts to ignore.
+|skipIfNoActivator|boolean|winegrower.skipIfNoActivator|false|Should artifacts without an activator be skipped in the indexation.
|===
== Create a distribution
@@ -141,6 +143,8 @@
|includeScopes|Collection<String>|winegrower.includeScopes|provided,compile,runtime|The scopes included in the produced artifact.
|output|File|winegrower.metadata.output|${project.build.outputDirectory}|Where to dump metadata.
|namingPattern|String|winegrower.metadata.namingPattern|WINEGROWER-INF/%s.properties|Naming pattern for each metadata - relative to output directory.
+|excludeArtifacts|String|winegrower.excludeArtifacts|-|either artifactId or groupId:artifactId of the artifacts to ignore.
+|skipIfNoActivator|boolean|winegrower.skipIfNoActivator|false|Should artifacts without an activator be skipped in the indexation.
|===
== From Winegrower no-manifest deployment to OSGi deployments
diff --git a/winegrower-extension/winegrower-build/winegrower-maven-plugin/src/main/java/org/apache/winegrower/extension/build/maven/BaseClasspathMojo.java b/winegrower-extension/winegrower-build/winegrower-maven-plugin/src/main/java/org/apache/winegrower/extension/build/maven/BaseClasspathMojo.java
index 339e0b6..162cc1c 100644
--- a/winegrower-extension/winegrower-build/winegrower-maven-plugin/src/main/java/org/apache/winegrower/extension/build/maven/BaseClasspathMojo.java
+++ b/winegrower-extension/winegrower-build/winegrower-maven-plugin/src/main/java/org/apache/winegrower/extension/build/maven/BaseClasspathMojo.java
@@ -32,13 +32,21 @@
@Parameter(defaultValue = "provided,compile,runtime", property = "winegrower.includeScopes")
private Collection<String> includeScopes;
+ @Parameter(property = "winegrower.excludeArtifacts")
+ private Collection<String> excludeArtifacts;
+
@Parameter(defaultValue = "${project.build.directory}/${project.build.finalName}.${project.packaging}", property = "winegrower.buildArtifact")
private File buildArtifact;
+ @Parameter(defaultValue = "false", property = "winegrower.skipIfNoActivator")
+ protected boolean skipIfNoActivator;
+
protected Collection<File> collectJars() {
return Stream.concat(
project.getArtifacts().stream()
.filter(it -> includeScopes.contains(it.getScope()))
+ .filter(it -> excludeArtifacts == null ||
+ (!excludeArtifacts.contains(it.getArtifactId()) && !excludeArtifacts.contains(it.getGroupId() + ':' + it.getArtifactId())))
.map(Artifact::getFile),
Stream.of(buildArtifact))
.filter(Objects::nonNull)
diff --git a/winegrower-extension/winegrower-build/winegrower-maven-plugin/src/main/java/org/apache/winegrower/extension/build/maven/FatJarMojo.java b/winegrower-extension/winegrower-build/winegrower-maven-plugin/src/main/java/org/apache/winegrower/extension/build/maven/FatJarMojo.java
index 4721ff8..bc32893 100644
--- a/winegrower-extension/winegrower-build/winegrower-maven-plugin/src/main/java/org/apache/winegrower/extension/build/maven/FatJarMojo.java
+++ b/winegrower-extension/winegrower-build/winegrower-maven-plugin/src/main/java/org/apache/winegrower/extension/build/maven/FatJarMojo.java
@@ -39,7 +39,7 @@
@Override
public void execute() {
- new FatJar(new FatJar.Configuration(collectJars(), output)).run();
+ new FatJar(new FatJar.Configuration(collectJars(), output, skipIfNoActivator)).run();
if (attach) {
helper.attachArtifact(project, output, classifier);
}
diff --git a/winegrower-extension/winegrower-build/winegrower-maven-plugin/src/main/java/org/apache/winegrower/extension/build/maven/MetadataBuilderMojo.java b/winegrower-extension/winegrower-build/winegrower-maven-plugin/src/main/java/org/apache/winegrower/extension/build/maven/MetadataBuilderMojo.java
index d38ecfe..fbddb45 100644
--- a/winegrower-extension/winegrower-build/winegrower-maven-plugin/src/main/java/org/apache/winegrower/extension/build/maven/MetadataBuilderMojo.java
+++ b/winegrower-extension/winegrower-build/winegrower-maven-plugin/src/main/java/org/apache/winegrower/extension/build/maven/MetadataBuilderMojo.java
@@ -41,7 +41,7 @@
@Override
public void execute() {
- final MetadataBuilder metadataBuilder = new MetadataBuilder();
+ final MetadataBuilder metadataBuilder = new MetadataBuilder(skipIfNoActivator);
final Set<String> alreadyAdded = new HashSet<>();
collectJars().forEach(jar -> {
try (final JarInputStream inputStream = new JarInputStream(new BufferedInputStream(new FileInputStream(jar)))) {