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)))) {