X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=src%2Forg%2Fargeo%2Fbuild%2FMake.java;h=b1d96e2ee9c710d9d86d69f4645722d8c872a5a7;hb=0e793f453640e378d1e92863a4d34d3c12e6c338;hp=e1e81deed4911992ad9b1bdce358664431d5e872;hpb=022586d6c0b0495123531fbf7b08595fa71d9264;p=cc0%2Fargeo-build.git diff --git a/src/org/argeo/build/Make.java b/src/org/argeo/build/Make.java index e1e81de..b1d96e2 100644 --- a/src/org/argeo/build/Make.java +++ b/src/org/argeo/build/Make.java @@ -45,6 +45,7 @@ import org.eclipse.jdt.core.compiler.CompilationProgress; import aQute.bnd.osgi.Analyzer; import aQute.bnd.osgi.Jar; +import aQute.bnd.osgi.Resource; import aQute.bnd.plugin.jpms.JPMSModuleInfoPlugin; /** @@ -482,6 +483,7 @@ public class Make { if (!Files.exists(binP)) Files.createDirectories(binP); Manifest manifest; + Resource moduleInfoClass = null; try (Analyzer bndAnalyzer = new Analyzer()) { bndAnalyzer.setProperties(properties); Jar jar = new Jar(bundleSymbolicName, binP.toFile()); @@ -492,6 +494,7 @@ public class Make { jar.setManifest(manifest); JPMSModuleInfoPlugin jpmsModuleInfoPlugin = new JPMSModuleInfoPlugin(); jpmsModuleInfoPlugin.verify(bndAnalyzer); + moduleInfoClass = bndAnalyzer.getJar().getResource("module-info.class"); } catch (Exception e) { throw new RuntimeException("Bnd analysis of " + compiled + " failed", e); } @@ -508,6 +511,18 @@ public class Make { manifest.write(out); } + // Write module-info.class + if (moduleInfoClass != null) { + Path moduleInfoClassP = binP.resolve("module-info.class"); + Files.createDirectories(moduleInfoClassP.getParent()); + try (OutputStream out = Files.newOutputStream(moduleInfoClassP)) { + moduleInfoClass.write(out); +// logger.log(INFO, "Wrote " + moduleInfoClassP); + } catch (Exception e) { + throw new RuntimeException("Cannot write module-info.class"); + } + } + // Load excludes List excludes = new ArrayList<>(); Path excludesP = argeoBuildBase.resolve("excludes.txt");