You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by nb...@apache.org on 2017/12/11 14:17:24 UTC
svn commit: r1817779 -
/felix/trunk/tools/maven-bundle-plugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java
Author: nbartlett
Date: Mon Dec 11 14:17:24 2017
New Revision: 1817779
URL: http://svn.apache.org/viewvc?rev=1817779&view=rev
Log:
FELIX-5592 Maven bundle plugin does not support Java 9 Multi-Release jars
Modified:
felix/trunk/tools/maven-bundle-plugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java
Modified: felix/trunk/tools/maven-bundle-plugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java
URL: http://svn.apache.org/viewvc/felix/trunk/tools/maven-bundle-plugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java?rev=1817779&r1=1817778&r2=1817779&view=diff
==============================================================================
--- felix/trunk/tools/maven-bundle-plugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java (original)
+++ felix/trunk/tools/maven-bundle-plugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java Mon Dec 11 14:17:24 2017
@@ -700,6 +700,9 @@ public class BundlePlugin extends Abstra
// update BND instructions to add included Maven resources
includeMavenResources(currentProject, builder, getLog());
+ // Fixup error messages
+ includeJava9Fixups(currentProject, builder, getLog());
+
// calculate default export/private settings based on sources
addLocalPackages(outputDirectory, builder);
@@ -2154,4 +2157,29 @@ public class BundlePlugin extends Abstra
analyzer.setProperty( Analyzer.SOURCEPATH, mavenSourcePaths.toString() );
}
}
+
+ /**
+ * Downgrade the message "Classes found in the wrong directory" to a warning. This allows the plugin
+ * to process a multi-release JAR (see JEP 238, http://openjdk.java.net/jeps/238).
+ *
+ * Note that the version-specific paths will NOT be visible at runtime nor processed by bnd for
+ * imported packages etc. This will not be possible until a runtime solution for multi-release
+ * JARs exists in OSGi. This fix only allows these JARs to be processed at all and to be usable on
+ * Java 8 (and below), and also on Java 9 where the version-specific customizations are optional.
+ */
+ protected static void includeJava9Fixups( MavenProject currentProject, Analyzer analyzer, Log log )
+ {
+ final String fixupClassesInWrongDir = "Classes found in the wrong directory;"
+ + Analyzer.FIXUPMESSAGES_IS_DIRECTIVE
+ + Analyzer.FIXUPMESSAGES_IS_WARNING;
+
+ String fixups = analyzer.getProperty(Analyzer.FIXUPMESSAGES);
+ if (fixups != null) {
+ fixups += "," + fixupClassesInWrongDir;
+ } else {
+ fixups = fixupClassesInWrongDir;
+ }
+ analyzer.setProperty(Analyzer.FIXUPMESSAGES, fixups);
+ }
+
}