io7m-com / primogenitor

io7m root POM
ISC License
5 stars 1 forks source link
maven pom

primogenitor

Maven Central Maven Central (snapshot) Codecov Java Version

com.io7m.primogenitor

JVM Platform Status
OpenJDK (Temurin) Current Linux Build (OpenJDK (Temurin) Current, Linux)
OpenJDK (Temurin) LTS Linux Build (OpenJDK (Temurin) LTS, Linux)
OpenJDK (Temurin) Current Windows Build (OpenJDK (Temurin) Current, Windows)
OpenJDK (Temurin) LTS Windows Build (OpenJDK (Temurin) LTS, Windows)

Building

To build this project, you must use:

$ mvn -Denforcer.skip=true clean package

The reason for this is that this POM file is intended to be the root POM for io7m projects and uses the Maven Enforcer plugin to require that descendant projects define values for certain properties that this root POM leaves empty. Because there is no way in Maven to have a plugin applied only to descendants, the root POM actually cannot pass its own checks! Using the enforcer.skip property allows the root POM to be installed and deployed to repositories.

Features

The primogenitor POM builds on existing Maven conventions and enforces stricter conventions of its own. The POM is heavily commented and exposes several configurable properties. See the properties section in the POM for details.

The primogenitor POM is heavily biased towards extensive static checking, and the production of byte-for-byte reproducible builds.

By setting the parent of a project's POM file to com.io7m.primogenitor, the project receives the following services: