Incode Parent

This module defines a standard parent POM that can be used as a parent for applications that use the Incode Platform 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. The quickstart app inherits from this module.

See below for details of the maven mixins so configured.

Contents

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

Module Ver. Description Mixin to add

0.0.2

Configures cucumber reporting plugin for BDD specs.

<mixin>
  <groupId>com.danhaywood.mavenmixin</groupId>
  <artifactId>cucumberreporting</artifactId>
</mixin>

0.0.4

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

<mixin>
  <groupId>com.danhaywood.mavenmixin</groupId>
  <artifactId>datanucleusenhance</artifactId>
</mixin>

0.0.3

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

<mixin>
  <groupId>com.danhaywood.mavenmixin</groupId>
  <artifactId>docker</artifactId>
</mixin>

0.0.2

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

<mixin>
  <groupId>com.danhaywood.mavenmixin</groupId>
  <artifactId>enforcerrelaxed</artifactId>
</mixin>

0.0.2

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

<mixin>
  <groupId>com.danhaywood.mavenmixin</groupId>
  <artifactId>jettyconsole</artifactId>
</mixin>

0.0.2

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

<mixin>
  <groupId>com.danhaywood.mavenmixin</groupId>
  <artifactId>jettywar</artifactId>
</mixin>

0.0.2

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

<mixin>
  <groupId>com.danhaywood.mavenmixin</groupId>
  <artifactId>sourceandjavadoc</artifactId>
</mixin>

0.0.3

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

<mixin>
  <groupId>com.danhaywood.mavenmixin</groupId>
  <artifactId>standard</artifactId>
</mixin>

0.0.4

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

<mixin>
  <groupId>com.danhaywood.mavenmixin</groupId>
  <artifactId>surefire</artifactId>
</mixin>

0.0.2

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

<mixin>
  <groupId>com.danhaywood.mavenmixin</groupId>
  <artifactId>staticanalysis</artifactId>
</mixin>

How to Configure

To configure:

  • inherit from this pom:

    <parent>
        <groupId>org.incode</groupId>
        <artifactId>incode-parent</artifactId>
        <version>1.15.1.1</version>
    </parent>

    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.

  • optionally, override the isis.version :

    <properties>
        <isis.version>1.15.1</isis.version>
        ...
    </properties>
  • for each maven mixin required in the consuming module, just add the corresponding <mixin> to:

    <build>
        <plugins>
            <plugin>
                <groupId>com.github.odavid.maven.plugins</groupId>
                <artifactId>mixin-maven-plugin</artifactId>
                <version>0.1-alpha-39</version>
                <extensions>true</extensions>
                <configuration>
                    <mixins>
                        ...                                         (1)
                    </mixins>
                </configuration>
            </plugin>
        </plugins>
    </build>
    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:

<mixin>
    <groupId>com.danhaywood.mavenmixin</groupId>
    <artifactId>surefire</artifactId>
</mixin>

Dependencies

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