X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=src%2Forg%2Fargeo%2Fbuild%2FRepackage.java;h=02158ad147231f3a5e7e552d8549e2c31416e3c2;hb=c5ce5217b5433d7470628c1ccb90141a028d3378;hp=d0216748777e5f30c06359512f30ad9cfb1e6ca4;hpb=3473c4ec64851e97b6d0bb29fe41370c13af7b27;p=cc0%2Fargeo-build.git diff --git a/src/org/argeo/build/Repackage.java b/src/org/argeo/build/Repackage.java index d021674..02158ad 100644 --- a/src/org/argeo/build/Repackage.java +++ b/src/org/argeo/build/Repackage.java @@ -9,7 +9,7 @@ import static java.nio.file.FileVisitResult.CONTINUE; import static java.nio.file.StandardOpenOption.APPEND; import static java.nio.file.StandardOpenOption.CREATE; import static java.util.jar.Attributes.Name.MANIFEST_VERSION; -import static org.argeo.build.Repackage.ManifestHeader.ARGEO_DO_NOT_MODIFY; +import static org.argeo.build.Repackage.ManifestHeader.ARGEO_ORIGIN_DO_NOT_MODIFY; import static org.argeo.build.Repackage.ManifestHeader.ARGEO_ORIGIN_M2; import static org.argeo.build.Repackage.ManifestHeader.ARGEO_ORIGIN_M2_MERGE; import static org.argeo.build.Repackage.ManifestHeader.ARGEO_ORIGIN_M2_REPO; @@ -181,6 +181,8 @@ public class Repackage { * and Export-Package will be kept untouched. */ ARGEO_ORIGIN_NO_METADATA_GENERATION("Argeo-Origin-NoMetadataGeneration"), // + /** Keep JPMS module-info */ + ARGEO_ORIGIN_KEEP_MODULE_INFO("Argeo-Origin-KeepModuleInfo"), // // /** // * Embed the original jar without modifying it (may be required by some // * proprietary licenses, such as JCR Day License). @@ -190,7 +192,7 @@ public class Repackage { * Do not modify original jar (may be required by some proprietary licenses, * such as JCR Day License). */ - ARGEO_DO_NOT_MODIFY("Argeo-Origin-Do-Not-Modify"), // + ARGEO_ORIGIN_DO_NOT_MODIFY("Argeo-Origin-Do-Not-Modify"), // /** * Origin (non-Maven) URI of the component. It may be anything (jar, archive, * etc.). @@ -376,7 +378,7 @@ public class Repackage { Path downloaded = downloadMaven(fileProps, artifact); boolean doNotModify = Boolean - .parseBoolean(fileProps.getOrDefault(ARGEO_DO_NOT_MODIFY.toString(), "false").toString()); + .parseBoolean(fileProps.getOrDefault(ARGEO_ORIGIN_DO_NOT_MODIFY.toString(), "false").toString()); if (doNotModify) { processNotModified(targetCategoryBase, downloaded, fileProps, artifact); return; @@ -470,8 +472,8 @@ public class Repackage { // download Path downloaded = downloadMaven(mergedProps, artifact); - boolean doNotModify = Boolean - .parseBoolean(mergedProps.getOrDefault(ARGEO_DO_NOT_MODIFY.toString(), "false").toString()); + boolean doNotModify = Boolean.parseBoolean( + mergedProps.getOrDefault(ARGEO_ORIGIN_DO_NOT_MODIFY.toString(), "false").toString()); if (doNotModify) { processNotModified(targetCategoryBase, downloaded, mergedProps, artifact); } else { @@ -1018,8 +1020,10 @@ public class Repackage { /** Normalise a single (that is, non-merged) bundle. */ Path processBundleJar(Path file, Path targetBase, Map entries, A2Origin origin) throws IOException { // boolean embed = Boolean.parseBoolean(entries.getOrDefault(ARGEO_ORIGIN_EMBED.toString(), "false").toString()); - boolean doNotModify = Boolean - .parseBoolean(entries.getOrDefault(ManifestHeader.ARGEO_DO_NOT_MODIFY.toString(), "false").toString()); + boolean doNotModify = Boolean.parseBoolean( + entries.getOrDefault(ManifestHeader.ARGEO_ORIGIN_DO_NOT_MODIFY.toString(), "false").toString()); + boolean keepModuleInfo = Boolean.parseBoolean( + entries.getOrDefault(ManifestHeader.ARGEO_ORIGIN_KEEP_MODULE_INFO.toString(), "false").toString()); NameVersion nameVersion; Path bundleDir; // singleton @@ -1078,7 +1082,7 @@ public class Repackage { } // force Java 9 module name - entries.put(ManifestHeader.AUTOMATIC_MODULE_NAME.toString(), nameVersion.getName()); + entries.put(AUTOMATIC_MODULE_NAME.toString(), nameVersion.getName()); boolean isNative = false; String os = null; @@ -1102,8 +1106,12 @@ public class Repackage { continue entries; } if (entry.getName().endsWith("module-info.class")) { // skip Java 9 module info - origin.deleted.add("Java module information (module-info.class)"); - continue entries; + if (keepModuleInfo) { + entries.remove(AUTOMATIC_MODULE_NAME.toString()); + } else { + origin.deleted.add("Java module information (module-info.class)"); + continue entries; + } } if (entry.getName().startsWith("META-INF/versions/")) { // skip multi-version origin.deleted.add("additional Java versions (META-INF/versions)");