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: