Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time



This module defines a standard parent POM to use for various Incode applications and modules. Its primary purpose is to make it easy to use a set up maven mixins within child POMs; specifically to hold the required <pluginManagement> so that versions of plugins are locked down.

See below for details of the maven mixins so configured.


This pom does not define any plugins for Apache Isis, so is independent of the release cycle of that framework.


This parent POM defines <properties> and <pluginManagement> for the plugins defined in the following maven mixins:

Module Version Description Mixin to add

cucumber reporting


Configures cucumber reporting plugin for BDD specs.


datanucleus enhance


Configures datanucleus:enhance (for JDO entities of DN modules) for production and test code




Configures docker to package images and upload to a docker registry (docker hub by default)


enforcer relaxed


Applies the maven enforcer plugin (but with relaxed dependency convergence)


jetty console


Configure jetty-console plugin (to create a standalone version of a webapp)


jetty war


Package up a webapp as a WAR file, and to allow the webapp to be run using the jetty maven plugin


source and javadoc


Provides the ability to run source, javadoc and jxr plugins (packaged as JAR files or report using mvn site)




Defines the "standard" set of plugins (clean, compile, jar, install, site etc)




Run surefire plugin for unit, integration and/or (Cucumber) BDD specs.


static analysis


Ability to run various static analysis plugins (checkstyle, pmd, findbugs, javancss, jdepend) as report mvn site


How to Configure

To configure:

  • inherit from this pom:


    This has the effect of defining a number of <properties> (eg ${mavenmixin-surefire.version}) and also the setting up the <pluginManagement> of all of the plugins referenced by the above maven mixins.

  • for each maven mixin required in the consuming module, just add the corresponding <mixin> to:

                    ...                                         <!--(1)-->
  1. add in mixin reference here.


Just copy-n-paste from the fourth column of the above table,

For example, to enable the surefire mixin, just add:


Change Log

for use with Apache Isis 2.0.0-Mx

  • 8 (merges in 2.6) - replaces existing repository definition ( with Also adds profile for gcpappenginerepo-deploy

  • 7 - (merges in 2.5) replaces existing repository definitions (cloudbees, sonatype snapshot, apache snapshot) with Also adds profile for nexus-deploy.

  • 6 - (merges in 2.4), moves snapshot repository definitions into profiles

  • 5 - (merges in 2.1, 2.2, 2.3), bumps to surefire 0.0.6, standard 0.0.4, docker 0.0.4

  • 4 - (based on 2), updated for datanucleus 0.0.5, to include DN 5.1.5 (in preparation for Apache Isis v2.0)

for use with Apache Isis 1.x

  • 2.6 - replaces existing repository definition ( with Also adds profile for gcpappenginerepo-deploy

  • 2.5 - replaces existing repository definitions (cloudbees, sonatype snapshot, apache snapshot) with Also adds profile for nexus-deploy.

  • 2.4 - moves snapshot repository definitions into profiles

  • 2.3 - maintenance release, bumps to docker 0.0.4

  • 2.2 - maintenance release, bumps to standard 0.0.4

  • 2.1 - maintenance release, bumps to surefire 0.0.6

  • 2 - adds in gmavenplus-plugin dependency, used by for docker-mavenmixin.

  • 1 - first release, adapted from incode-parent (v1.13.2.1), but removed all dependencies and reference to Apache Isis.


Copyright 2017~date Dan Haywood

Licensed under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.


This mixin module relies on the com.github.odavid.maven.plugins:mixin-maven-plugin, released under Apache License v2.0.

Maven deploy notes

The module is deployed using Sonatype’s OSS support (see user guide and this blog post).

The script automates the release process. It performs the following:

  • performs a sanity check (mvn clean install -o) that everything builds ok

  • bumps the pom.xml to a specified release version, and tag

  • performs a double check (mvn clean install -o) that everything still builds ok

  • releases the code using mvn clean deploy

  • bumps the pom.xml to a specified release version

For example:

sh 8 \
              9-SNAPSHOT \
              danhaywood \
              Pa$$w0rd \
              "this is not really my passphrase"


  • $1 is the release version

  • $2 is the snapshot version

  • $3 is the nexus user account for (ie to deploy)

  • $4 is the corresponding password

  • $5 is the email of the secret key (~/.gnupg/secring.gpg) to use for signing

  • $6 is the corresponding passphrase for that secret key.

Other ways of specifying the key and passphrase are available, see the pgp-maven-plugin's documentation).

If the script completes successfully, then push changes:

git push origin v2 && git push origin 8

If the script fails to complete, then identify the cause, perform a git reset --hard to start over and fix the issue before trying again. Note that in the dom’s `pom.xml the nexus-staging-maven-plugin has the autoReleaseAfterClose setting set to true (to automatically stage, close and the release the repo). You may want to set this to false if debugging an issue.

According to Sonatype’s guide, it takes about 10 minutes to sync, but up to 2 hours to update search.


Parent repository defining plugins for building Java applications



No packages published


You can’t perform that action at this time.