Vladyslav Kosulin created TINKERPOP-2623:
--------------------------------------------
Summary: Add JPMS (Java Platform Module System) support to
TinkerPop
Key: TINKERPOP-2623
URL: https://issues.apache.org/jira/browse/TINKERPOP-2623
Project: TinkerPop
Issue Type: Improvement
Components: build-release
Affects Versions: 3.5.1
Reporter: Vladyslav Kosulin
Please add JPMS (Java Platform Module System) support to TinkerPop.
JPMS was introduced to Java since version 9.
If the application, like mine, uses JPMS, it may suffer form errors similar to
"The package java.util is accessible from more than one module: <unnamed>,
java.base".
These error messages are caused by the fact that jars you currently provide are
treated as unnamed modules, and when mixed with other unnamed modules from
classpath they can easily break the module inheritance hierarchy.
While these errors can be fixed by <exclude> in application POM, they are hard
to localize the causing libraries.
You can still stick to Java 8 codewise, jars compiled with Java 8 work fine
with apps that use Java 9 and up.
All you need to avoid such issues is include the following line:
Automatic-Module-Name:
org.apache.tinkerpop.<your-unique-chosen-module-name-for-this-jar>
to each jar's META-INF/MANIFEST.MF
You can either manually add this line to each MANIFEST.MF, or modify
maven-jar-plugin config in POM. See, for example,
[http://branchandbound.net/blog/java/2017/12/automatic-module-name/] for more
details.
You can also look into org.apache.commons.configuration2 as reference on how to
add this manifest entry whill keeping the library with Java 8 .
This would be an easy first step to begin modularization of TinkerPop while
sticking to Java 8.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)