This project is a multi-module Maven project. A multi-module Maven project consists of an aggregator project (the datasketches-memory project), together with a set of submodules. The aggregator's configuration is inherited by each submodule, thus reducing duplication.
Datasketches Memory makes use of some features of the Java platform, for example, Unsafe, which have evolved in Java versions 9 and above. Therefore, a multi-module project allows us to add support for later versions of Java by using independent Maven modules to target platform-specific APIs. For example, to deallocate references a sun.misc.Cleaner will be used in Java8, but the jdk.internal.ref.Cleaner is used in Java 11.
This project has been divided into the following submodules:
During the Maven package phase, the Maven exec plugin invokes a custom bash script package-mr-jar.sh located in the tools/scripts directory.
This script assembles sources and compiled classes from the individual maven modules into a coherent set of JARs that appear to the end user to originate from a single module.
The following jars are assembled by the bash package script: