v1.4.0
This release contains support for configuring --patch-module
easily to work around split package issues, and a number of bug fixes.
Happy holidays!
Patching modules to prevent split packages
The Java Platform Module System doesn't allow split packages.
A split package means that the same package exists in multiple modules.
While this is a good thing, it can be a roadblock to use the module system, because split packages are very common in (older) libraries, specially libraries related to Java EE.
The module system has a solution for this problem by allowing to "patch" modules.
The contents of a JAR file can be added to a module, by patching that module, so that it contains classes from both JARs.
This way we can drop the second JAR file, which removes the split package.
Patching a module can be done with the --patch-module module=somelib.jar
syntax for the different Java commands (javac, java, javadoc, ...).
The plugin helps making patching easy by providing DSL syntax.
Because patching typically needs to happen on all tasks the patch config is set in the build.gradle file directly.
In this example, the java.annotation
module is patched with the jsr305-3.0.2.jar
JAR file.
The plugin takes care of the following:
- Adding the
--patch-module
to all Java commands - Removing the JAR from the module path
- Moving the JAR to a
patchlibs
folder for distribution tasks
patchModules.config = [
"java.annotation=jsr305-3.0.2.jar"
]