import static org.argeo.build.Repackage.ManifestHeader.ECLIPSE_SOURCE_BUNDLE;
import static org.argeo.build.Repackage.ManifestHeader.EXPORT_PACKAGE;
import static org.argeo.build.Repackage.ManifestHeader.IMPORT_PACKAGE;
+import static org.argeo.build.Repackage.ManifestHeader.REQUIRE_BUNDLE;
import static org.argeo.build.Repackage.ManifestHeader.SPDX_LICENSE_IDENTIFIER;
import java.io.BufferedWriter;
EXPORT_PACKAGE("Export-Package"), //
/** OSGi imported packages list. */
IMPORT_PACKAGE("Import-Package"), //
+ /** OSGi required bundles. */
+ REQUIRE_BUNDLE("Require-Bundle"), //
/** OSGi path to embedded jar. */
BUNDLE_CLASSPATH("Bundle-Classpath"), //
// Java
/** 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"), //
sourceManifest = jarIn.getManifest();
if (sourceManifest == null)
logger.log(WARNING, file + " has no manifest");
+ else {
+ if (!doNotModify)
+ sourceManifest.getMainAttributes().remove(REQUIRE_BUNDLE.toString());
+ }
manifest = sourceManifest != null ? new Manifest(sourceManifest) : new Manifest();
String rawSourceSymbolicName = manifest.getMainAttributes().getValue(BUNDLE_SYMBOLICNAME.toString());
// 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));