SLING-10209: don't reinstall packages already present in the registry.
diff --git a/src/main/java/org/apache/sling/feature/extension/content/ContentHandler.java b/src/main/java/org/apache/sling/feature/extension/content/ContentHandler.java
index 5bfe091..3ed80d9 100644
--- a/src/main/java/org/apache/sling/feature/extension/content/ContentHandler.java
+++ b/src/main/java/org/apache/sling/feature/extension/content/ContentHandler.java
@@ -30,6 +30,7 @@
 import java.util.TreeMap;
 
 import org.apache.jackrabbit.vault.packaging.PackageId;
+import org.apache.jackrabbit.vault.packaging.PackageExistsException;
 import org.apache.jackrabbit.vault.packaging.SubPackageHandling;
 import org.apache.jackrabbit.vault.packaging.registry.ExecutionPlanBuilder;
 import org.apache.jackrabbit.vault.packaging.registry.PackageTask.Type;
@@ -74,11 +75,14 @@
         builder.with(satisfiedPackages);
 
         for (File pkgFile : packageReferences) {
+            try {
+                PackageId pid = registry.registerExternal(pkgFile, false);
+                extractSubPackages(registry, builder, pid);
 
-            PackageId pid = registry.registerExternal(pkgFile, true);
-            extractSubPackages(registry, builder, pid);
-
-            builder.addTask().with(pid).with(Type.EXTRACT);
+                builder.addTask().with(pid).with(Type.EXTRACT);
+            } catch (PackageExistsException ex) {
+                // Expected - the package is already present
+            }
         }
         builder.validate();
         satisfiedPackages.addAll(builder.preview());