Hosted by Three Crickets

Sincerity
Packaging and Bootstrapping
For the JVM

Please note that Sincerity is still under development and that this documentation is incomplete.

Sincerity logo: jackrabbit and flowers

Specifications

Sincerity Packages

Packages are collections of artifacts. They are defined using special tags in standard JVM resource manifests. Additionally, packages support special install/uninstall hooks for calling arbitrary entry points, allowing for custom behavior. Indeed, a package can include no artifacts, and only implement these hooks.
Packages allow you to work around various limitations in repositories such as iBiblio/Maven, in which the smallest deployable unit is a Jar. The package specification allows you to include as many files as you need in a single Jar, greatly simplifying your deployment scheme.
Note that two different ways are supported for specifying artifacts: they can specified as files, thus referring to actual zipped entries with the Jar file in which the manifest resides, or that can be specified as general resources, in which case they will be general resource URLs to be loaded by the classloader, and thus they can reside anywhere in the classpath.
Also note what "volatile" means in this context: a "volatile" artifact is one that should be installed once and only once. This means that subsequent attempts to install the package, beyond the first, should ignore these artifacts. This is useful for marking configuration files, example files, and other files that the user should be allow to delete without worrying that they would reappear on every change to the dependency structure.

The Manifest

Supported manifest tags:
For example, here is a "/META-INF/MANIFEST.MF" file:
Manifest-Version: 1.0
Package-Folders: package
All packaged files would be expected under the "/package/" directory inside the Jar.
Note that manifests can often be automatically created by packaging tools. See the Maven example.

The Sincerity Manual is provided for you under the terms of the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. The complete manual is available for download as a PDF.

Download manual as PDF Creative Commons License