Remove Require-Bundle when modifying MANIFEST
[cc0/argeo-build.git] / src / org / argeo / build / Repackage.java
index ccdd889e749056433752c4c17cefdca8091f3641..26d37348bbcb5d5d844a2332da1a61f3e707506c 100644 (file)
@@ -174,7 +174,7 @@ public class Repackage {
                /** Maven repository, if not the default one. */
                ARGEO_ORIGIN_M2_REPO("Argeo-Origin-M2-Repo"), //
                /**
-                * Do not perform BND analysis of the origin component. Typically Import_package
+                * Do not perform BND analysis of the origin component. Typically Import-Package
                 * and Export-Package will be kept untouched.
                 */
                ARGEO_ORIGIN_NO_METADATA_GENERATION("Argeo-Origin-NoMetadataGeneration"), //
@@ -725,6 +725,7 @@ public class Repackage {
                                                case "Tool":
                                                case "Bnd-LastModified":
                                                case "Created-By":
+                                               case "Require-Bundle":
                                                        continue keys;
                                                }
                                                if ("Require-Capability".equals(key.toString())
@@ -1126,8 +1127,9 @@ public class Repackage {
                                Files.copy(jarIn, target);
 
                                // native libraries
+                               boolean removeDllFromJar = true;
                                if (isNative && (entry.getName().endsWith(".so") || entry.getName().endsWith(".dll")
-                                               || entry.getName().endsWith(".jnilib"))) {
+                                               || entry.getName().endsWith(".jnilib") || entry.getName().endsWith(".a"))) {
                                        Path categoryDir = bundleDir.getParent();
                                        boolean copyDll = false;
                                        Path targetDll = categoryDir.resolve(bundleDir.relativize(target));
@@ -1149,8 +1151,11 @@ public class Repackage {
                                                        Files.delete(targetDll);
                                                Files.copy(target, targetDll);
                                        }
-                                       Files.delete(target);
-                                       origin.deleted.add(bundleDir.relativize(target).toString());
+
+                                       if (removeDllFromJar) {
+                                               Files.delete(target);
+                                               origin.deleted.add(bundleDir.relativize(target).toString());
+                                       }
                                }
                                logger.log(TRACE, () -> "Copied " + target);
                        }