ADRs/0016 - Java 9+ Support.md
Discussion
Proposed by: Adam Gibson (7th Feb 2022)
With the next LTS upcoming (java 17) forcing module metadata to be present. This means supporting java 9+ modules with mdoule-info.java being present.
This ADR addresses the changes made to support java 9 modules. Many of the changes are related to adding module-info.java
moditect plugin metadata for every module a. Each module has a module.name with 1 inherited declaration in the root pom for generating and adding module metadata. b. Github Workflow upgrades for generating module metadata before publishing c. Moditect plugin declarations are optional by default and selectively invoked
Add build steps invoking the plugin ensuring proper metadata gets added
Each maven jar plugin invocation needs a unique module name for jars that have classifiers such as the nd4j backends this avoids duplicate name errors when trying to invoke metadata
Proper package split package declarations enable proper module exposure. This means some classes have been moved around. Mainly internal classes are affected such as the preset names.