]> source.dussan.org Git - pf4j.git/commitdiff
Provide a module descriptor for Java 9+ (#300)
authorAndreas Rudolph <andy@openindex.de>
Tue, 19 Mar 2019 18:19:53 +0000 (19:19 +0100)
committerDecebal Suiu <decebal.suiu@gmail.com>
Tue, 19 Mar 2019 18:19:53 +0000 (20:19 +0200)
pf4j/pom.xml
pf4j/src/main/java/module-info.java [new file with mode: 0644]
pom.xml

index 061412dd6bfb42d0ced6589a1851f936ed80c387..8995e5ad400412e9a22e1964143f3282ed9d7e4d 100644 (file)
                 <configuration>
                     <compilerArgument>-proc:none</compilerArgument>
                 </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifestEntries>
-                            <Automatic-Module-Name>org.pf4j</Automatic-Module-Name>
-                        </manifestEntries>
-                    </archive>
-                </configuration>
+                <executions>
+                    <!-- compile everything for Java 8 except the module-info.java -->
+                    <execution>
+                        <id>default-compile</id>
+                        <goals>
+                            <goal>compile</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>module-info.java</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+
+                    <!-- compile module-info.java for Java 9+ -->
+                    <execution>
+                        <id>java9-compile</id>
+                        <goals>
+                            <goal>compile</goal>
+                        </goals>
+                        <configuration>
+                            <release>9</release>
+                            <multiReleaseOutput>true</multiReleaseOutput>
+                            <includes>
+                                <include>module-info.java</include>
+                            </includes>
+                        </configuration>
+                    </execution>
+                </executions>
             </plugin>
         </plugins>
     </build>
         </dependency>
 
         <dependency>
-            <!-- An empty artifact, required while JUnit 4 is on the classpath to override its
-                 dependency on hamcrest.
+            <!-- 
+            An empty artifact, required while JUnit 4 is on the classpath to override its
+            dependency on hamcrest.
 
-                 See http://hamcrest.org/JavaHamcrest/distributables#upgrading-from-hamcrest-1x
-                 -->
+            See http://hamcrest.org/JavaHamcrest/distributables#upgrading-from-hamcrest-1x
+            -->
             <groupId>org.hamcrest</groupId>
             <artifactId>hamcrest-core</artifactId>
             <version>${hamcrest.version}</version>
diff --git a/pf4j/src/main/java/module-info.java b/pf4j/src/main/java/module-info.java
new file mode 100644 (file)
index 0000000..754b9b8
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2012-present the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Module descriptor for PF4J.
+ *
+ * @author Decebal Suiu
+ * @author Andreas Rudolph
+ */
+module org.pf4j {
+    requires java.base;
+
+    // provides javax.annotation
+    requires java.compiler;
+
+    // provided by the ASM library
+    requires org.objectweb.asm;
+
+    // The SLF4J library currently does not provide a module.
+    // Version 1.8 provides a module called "org.slf4j". But this version is
+    // currently in beta stage. Therefore I'm not sure, if we already like to
+    // use it.
+    requires slf4j.api;
+
+    // The java-semver library currently does not provide a module.
+    // Maybe we should send them a pull request, that at least they provide an
+    // automatic module name in their MANIFEST file.
+    requires java.semver;
+
+    // Maybe we should reconsider the package hierarchy, that only classes are
+    // exported, which are required by 3rd party developers.
+    exports org.pf4j;
+    exports org.pf4j.processor;
+}
diff --git a/pom.xml b/pom.xml
index d3904e26f5ca0f4da2557bac4f858d3cd9248044..ef5f93720d6e2e90ef162b33deed1ec85f474d93 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -43,8 +43,7 @@
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.target>1.8</maven.compiler.target>
-        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.release>8</maven.compiler.release>
 
         <slf4j.version>1.7.25</slf4j.version>
         <asm.version>7.1</asm.version>