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