X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=src%2Forg%2Fargeo%2Fbuild%2FMake.java;h=2b6187bcd6d9912d570232e7c40dd0426f5ffa86;hb=981fb47f2abf1587a2b7551310617ce532927472;hp=62ef0b61e248fc23a33997101353939daed33049;hpb=bb6d70cc7710eae3d6b165d03bef58a410eab1b1;p=cc0%2Fargeo-build.git diff --git a/src/org/argeo/build/Make.java b/src/org/argeo/build/Make.java index 62ef0b6..2b6187b 100644 --- a/src/org/argeo/build/Make.java +++ b/src/org/argeo/build/Make.java @@ -38,12 +38,14 @@ import java.util.jar.Attributes; import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; import java.util.jar.Manifest; +import java.util.stream.Collectors; import java.util.zip.Deflater; import org.eclipse.jdt.core.compiler.CompilationProgress; import aQute.bnd.osgi.Analyzer; import aQute.bnd.osgi.Jar; +import aQute.bnd.plugin.jpms.JPMSModuleInfoPlugin; /** * Minimalistic OSGi compiler and packager, meant to be used as a single file @@ -175,7 +177,8 @@ public class Make { List a2Categories = options.getOrDefault("--dep-categories", new ArrayList<>()); List a2Bases = options.getOrDefault("--a2-bases", new ArrayList<>()); - if (a2Bases.isEmpty() || !a2Bases.contains(a2Output.toString())) { + a2Bases = a2Bases.stream().distinct().collect(Collectors.toList());// remove duplicates + if (a2Bases.isEmpty() || !a2Bases.contains(a2Output.toString())) {// make sure a2 output is available a2Bases.add(a2Output.toString()); } @@ -204,10 +207,9 @@ public class Make { A2Jar current = a2Jars.get(a2Jar.name); if (a2Jar.major > current.major) a2Jars.put(a2Jar.name, a2Jar); - else if (a2Jar.major == current.major // - // if minor equals, we take the last one - && a2Jar.minor >= current.minor) + else if (a2Jar.major == current.major && a2Jar.minor > current.minor) a2Jars.put(a2Jar.name, a2Jar); + // keep if minor equals } else { a2Jars.put(a2Jar.name, a2Jar); } @@ -485,6 +487,9 @@ public class Make { Jar jar = new Jar(bundleSymbolicName, binP.toFile()); bndAnalyzer.setJar(jar); manifest = bndAnalyzer.calcManifest(); + + JPMSModuleInfoPlugin jpmsModuleInfoPlugin = new JPMSModuleInfoPlugin(); + jpmsModuleInfoPlugin.verify(bndAnalyzer); } catch (Exception e) { throw new RuntimeException("Bnd analysis of " + compiled + " failed", e); }