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)

Reply via email to