kemitix-parent/README.md

8.7 KiB

KEMITIX-PARENT

  • kemitix-parent
  • kemitix-maven-tiles

Parent

A parent POM for my own personal projects.

Usage

<project>
    <parent>
        <groupId>net.kemitix</groupId>
        <artifactId>kemitix-parent</artifactId>
        <version>RELEASE</version>
    </parent>

Contents

The POM defines the following items:

  • issueManagement
  • scm
  • url
  • inceptionYear
  • licenses
  • developers
  • distributionManagement

The POM sets the following properties:

  • project.reporting.outputEncoding as UTF-8
  • java.version as 1.8

Tiles

Maven Tiles for preconfigured plugins. These can be used independently of the kemitix-parent POM.

Usage

<project>
    <properties>
        <tiles-maven-plugin.version>2.10</tiles-maven-plugin.version>
        <kemitix-tiles.version>0.1.0</kemitix-tiles.version>
    </properties>
    <build>
        <plugins>
            <plugin>
                <groupId>io.repaint.maven</groupId>
                <artifactId>tiles-maven-plugin</artifactId>
                 <version>${tiles-maven-plugin.version}</version>
                <extensions>true</extensions>
                <configuration>
                    <tiles>
                         <tile>net.kemitix.tiles:all-tiles:${kemitix-tiles.version}</tile>

                         <!-- or -->

                         <tile>net.kemitix.tiles:maven-plugins-tile:${kemitix-tiles.version}</tile>
                         <tile>net.kemitix.tiles:enforcer-tile:${kemitix-tiles.version}</tile>
                         <tile>net.kemitix.tiles:compiler-tile:${kemitix-tiles.version}</tile>
                         <tile>net.kemitix.tiles:checkstyle-tile:${kemitix-tiles.version}</tile>
                         <tile>net.kemitix.tiles:huntbugs-tile:${kemitix-tiles.version}</tile>
                         <tile>net.kemitix.tiles:pmd-tile:${kemitix-tiles.version}</tile>
                         <tile>net.kemitix.tiles:digraph-tile:${kemitix-tiles.version}</tile>
                         <tile>net.kemitix.tiles:testing-tile:${kemitix-tiles.version}</tile>
                         <tile>net.kemitix.tiles:coverage-tile:${kemitix-tiles.version}</tile>
                         <tile>net.kemitix.tiles:pitest-tile:${kemitix-tiles.version}</tile>
                         <tile>net.kemitix.tiles:release-tile:${kemitix-tiles.version}</tile>
                   </tiles>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Properties

If you want to override the version or configuration values of any of the plugins configured by the tiles, you can set the following properties to the desired value.

  • project.build.sourceEncoding
  • maven-javadoc-plugin.version
  • maven-source-plugin.version
  • maven-gpg-plugin.version
  • maven-deploy-plugin.version
  • maven-compiler-plugin.version
  • maven-surefire-plugin.version
  • maven-failsafe-plugin.version
  • maven-jxr-plugin.version
  • java.version
  • versions.version
  • coveralls-maven-plugin.version

Maven Plugins Tile

Sets updated versions for the following org.apache.maven.plugins:

  • maven-clean-plugin
  • maven-install-plugin
  • maven-site-plugin

Adds an updated version of the org.codehaus.mojo:versions-maven-plugin plugin.

Maven JXR Plugin

The Maven JXR Plugin produces cross-referenced HTML pages of your source code as part of the compile phase in target/site/xref/.

Enforcer Tile

Provides the maven-enforcer-plugin, performing the display-info and enforce goals during the validate phase.

Required Maven Version is set by the required-maven.version property.

Required Java Version is set by the java.version property.

Compiler Tile

Maven Compiler Plugin

The Maven Compiler Plugin compiles your sources.

Ref: compile:compile

  • showDeprecation: true
  • showWarnings: true
  • source: ${java.version}
  • target: ${java.version}
  • encoding: ${project.build.sourceEncoding}

Checkstyle Tile

The Maven Checkstyle Plugin verifies the source code against a Checkstyle ruleset file.

The default ruleset is the level 5-complexity ruleset from kemitix-checkstyle-ruleset.

To use another level within kemitix-checkstyle-ruleset, set the ruleset.level property. e.g. 4-tweaks.

To use a different checkstyle ruleset completely, set the checkstyle.ruleset.location property.

Huntbugs Tile

The Huntbugs Maven Plugin performs a static analysis of the compiled bytecode for common bug patterns during the verify phase.

PMD Tile

The PMD Maven Plugin performs the PMD static code analysis during the verify phase.

Has a transitive dependency upon the maven-plugins-tile and includes it automatically.

Digraph Tile

The Digraph Maven Plugin creates a graphviz diagram of the package dependencies within the source code during the verify phase.

Set the property digraph-dependency.basePackage to the base of the project to be graphed. The default value is net.kemitix.

Testing Tile

Maven Surefire Plugin

The Maven Surefire Plugin runs your Unit Tests during the test phase.

Maven Failsafe Plugin

The Maven Failsafe Plugin runs your Integration Tests during the verify phase.

Coverage Tile

Jacoco

The Jacoco Maven Plugin verifies that the test suite meets the required coverage ratios.

The defaults require that all classes, lines and branches be covered by tests. i.e. 100% code coverage.

Set the following properties to set less strict targets:

  • jacoco-class-line-covered-ratio - default = 1 (i.e. 100%)
  • jacoco-class-instruction-covered-ratio - default = 1 (i.e. 100%)
  • jacoco-class-missed-count-maximum - default = 0 (i.e. #classes with no tests <= 0)

Classes with names that end in the following are excluded from these limits:

  • Test
  • IT
  • Main
  • Application
  • Configuration
  • Immutable

Coveralls

The Coveralls Maven Plugin publishes coverage data to coveralls.io.

The plugin is not configured to run automatically. It must be initiated manually, and requires the release profile to be enabled:

mvn -P release test jacoco:report coveralls:report

This runs the tests, creates the jacoco report from the tests then uploads the results to http://coveralls.io.

Pitest Tile

Mutation Testing

The Pitest Maven Plugin perform mutation test coverage checks during the verify phase.

Code coverage must by 100% and all mutations must result in a test from the test suite failing.

Set pitest.skip to avoid running the mutation test.

Set pitest.coverage to a value between 0 and 1 to set the allowed ratio of uncovered code. i.e. 0 = 100% code coverage, 0.2 = 80% code coverage

Set pitest.mutation to a value between 0 and 1 to set the allowed mutations to survive the test suite. i.e. 0 = 100% mutations caught, 0.2 = 80% mutations caught

Highwheel Cyclic Analysis

The Highwheel Maven Plugin detects and visualises class and package cyclic dependencies during the verify phase. It also reports on tests that appear to have been orphaned during refactoring.

The generated report is created in target/highwheel/.

Release Tile

The plugins in this Tile are only activated when the release profile is enabled.

Maven Source Plugin

The Maven Source Plugin bundles your sources into a jar file ready for deployment.

Runs its jar-no-fork goal during the verify phase.

Maven Javadoc Plugin

The Maven Javadoc Plugin generates your html javadocs and bundles them into a jar file ready for deployment.

Runs its jar goal during the verify phase.

Maven Deploy Plugin

The Maven Deploy Plugin uploads your artifacts to a remote repository.