Rewrite README

This commit is contained in:
Paul Campbell 2017-12-29 18:49:54 +00:00
parent c494866e16
commit b0e3f4c2af

266
README.md
View file

@ -1,54 +1,129 @@
KEMITIX-PARENT KEMITIX-PARENT
============== ==============
This Maven Parent POM several preconfigured plugins. * `kemitix-parent`
* `kemitix-maven-tiles`
## Parent
A parent POM for my own personal projects.
### Usage ### Usage
#### Maven ```xml
<project>
<parent> <parent>
<groupId>net.kemitix</groupId> <groupId>net.kemitix</groupId>
<artifactId>kemitix-parent</artifactId> <artifactId>kemitix-parent</artifactId>
<version>RELEASE</version> <version>RELEASE</version>
</parent> </parent>
```
## Versions ### Contents
If you want to override the version or configuration values of any of the The POM defines the following items:
plugins configured by this parent, you can set the following properties to the
desired value.
* project.build.sourceEncoding * `issueManagement`
* project.reporting.outputEncoding * `scm`
* kemitix.build.directory * `url`
* kemitix-quality-maven-plugin.version * `inceptionYear`
* lombok.version * `licenses`
* maven-javadoc-plugin.version * `developers`
* maven-source-plugin.version * `distributionManagement`
* 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
## Kemitix Quality The POM sets the following properties:
The [kemitix-quality-maven-plugin](https://github.com/kemitix/kemitix-quality-maven-plugin) * `project.reporting.outputEncoding` as `UTF-8`
provides several preconfigured quality related plugins. * `java.version` as `1.8`
N.B. The Kemitix Quality plugin required 100% code instruction coverage and mutation ratio. See the project page for details of adjusting these levels if needed. ## Tiles
## Maven Compiler Plugin Maven Tiles for preconfigured plugins. These can be used independently of the `kemitix-parent` POM.
The [Maven Compiler Plugin](https://maven.apache.org/plugins/maven-compiler-plugin/) ### Usage
compiles your sources.
### Configuration ```xml
<project>
<properties>
<tiles-maven-plugin.version>2.10</tiles-maven-plugin.version>
<kemitix-tiles.version>0.1.0-SNAPSHOT</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](http://maven.apache.org/jxr/maven-jxr-plugin/index.html) 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](https://maven.apache.org/plugins/maven-compiler-plugin/) compiles your sources.
Ref: [compile:compile](https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html) Ref: [compile:compile](https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html)
@ -58,101 +133,114 @@ Ref: [compile:compile](https://maven.apache.org/plugins/maven-compiler-plugin/co
* target: ${java.version} * target: ${java.version}
* encoding: ${project.build.sourceEncoding} * encoding: ${project.build.sourceEncoding}
## Maven Surefire Plugin ### Checkstyle Tile
The [Maven Surefire Plugin](http://maven.apache.org/surefire/maven-surefire-plugin/index.html) The [Maven Checkstyle Plugin](https://maven.apache.org/plugins/maven-checkstyle-plugin/) verifies the source code against a Checkstyle ruleset file.
runs your Unit Tests.
### Configuration The default ruleset is the level `5-complexity` ruleset from [`kemitix-checkstyle-ruleset`](https://github.com/kemitix/kemitix-checkstyle-ruleset).
No configuration applied beyond the defaults. To use another level within `kemitix-checkstyle-ruleset`, set the `ruleset.level` property. e.g. `4-tweaks`.
## Maven Failsafe Plugin To use a different checkstyle ruleset completely, set the `checkstyle.ruleset.location` property.
The [Maven Failsafe Plugin](http://maven.apache.org/surefire/maven-failsafe-plugin/index.html)
runs your Integration Tests.
Runs its [integration-test](http://maven.apache.org/surefire/maven-failsafe-plugin/integration-test-mojo.html) ### Huntbugs Tile
goal during the `verify` phase.
### Configuration The [Huntbugs Maven Plugin](https://github.com/amaembo/huntbugs) performs a static analysis of the compiled bytecode for common bug patterns during the `verify` phase.
No configuration applied beyond the defaults. ### PMD Tile
## Maven Source Plugin The [PMD Maven Plugin](https://maven.apache.org/plugins/maven-pmd-plugin/) performs the PMD static code analysis during the `verify` phase.
The [Maven Source Plugin](https://maven.apache.org/plugins/maven-source-plugin/) Has a transitive dependency upon the `maven-plugins-tile` and includes it automatically.
bundles your sources into a jar file ready for deployment.
Runs its [jar-no-fork](https://maven.apache.org/plugins/maven-source-plugin/jar-no-fork-mojo.html) ### Digraph Tile
goal during the `verify` phase.
### Configuration The [Digraph Maven Plugin](https://github.com/kemitix/digraph-dependency-maven-plugin/) creates a graphviz diagram of the package dependencies within the source code during the `verify` phase.
No configuration applied beyond the defaults. Set the property `digraph-dependency.basePackage` to the base of the project to be graphed. The default value is `net.kemitix`.
## Maven Javadoc Plugin ### Testing Tile
The [Maven Javadoc Plugin](https://maven.apache.org/plugins/maven-javadoc-plugin/) #### Maven Surefire Plugin
generates your html javadocs and bundles them into a jar file ready for
deployment.
Runs its [jar](https://maven.apache.org/plugins/maven-javadoc-plugin/jar-mojo.html) The [Maven Surefire Plugin](http://maven.apache.org/surefire/maven-surefire-plugin/index.html) runs your Unit Tests during the `test` phase.
goal during the `verify` phase.
### Configuration ### Maven Failsafe Plugin
No configuration applied beyond the defaults. The [Maven Failsafe Plugin](http://maven.apache.org/surefire/maven-failsafe-plugin/index.html) runs your Integration Tests during the `verify` phase.
## Maven Deploy Plugin ### Coverage Tile
The [Maven Deploy Plugin](https://maven.apache.org/plugins/maven-deploy-plugin/) #### Jacoco
uploads your artifacts to a remote repository.
### Configuration The [Jacoco Maven Plugin](http://www.eclemma.org/jacoco/trunk/doc/maven.html) verifies that the test suite meets the required coverage ratios.
No configuration applied beyond the defaults. The defaults require that all classes, lines and branches be covered by tests. i.e. 100% code coverage.
## Maven JXR Plugin Set the following properties to set less strict targets:
The [Maven JXR Plugin](http://maven.apache.org/jxr/maven-jxr-plugin/index.html) * `jacoco-class-line-covered-ratio` - default = 1 (i.e. 100%)
produces cross-referenced HTML pages of your source code. * `jacoco-class-instruction-covered-ratio` - default = 1 (i.e. 100%)
* `jacoco-class-missed-count-maximum` - default = 0 (i.e. #classes with no tests <= 0)
### Configuration Classes with names that end in the following are excluded from these limits:
No configuration applied beyond the defaults. * `Test`
* `IT`
* `Main`
* `Application`
* `Configuration`
* `Immutable`
## Coveralls #### Coveralls
The [Coveralls Maven Plugin](https://github.com/trautonen/coveralls-maven-plugin) The [Coveralls Maven Plugin](https://github.com/trautonen/coveralls-maven-plugin) publishes coverage data to coveralls.io.
publishes coverage data to coveralls.io.
### Configuration The plugin is not configured to run automatically. It must be initiated manually, and requires the `release` profile to be enabled:
The plugin is not configured to run automatically. It must be initiated manually:
```shell ```shell
mvn -P release test jacoco:report coveralls:report mvn -P release test jacoco:report coveralls:report
``` ```
#### Requirements This runs the tests, creates the jacoco report from the tests then uploads the results to http://coveralls.io.
In order to use the plugin: ### Pitest Tile
* *must* enable the `release` profile #### Mutation Testing
# Distribution Management The [Pitest Maven Plugin](http://pitest.org/quickstart/maven/) perform mutation test coverage checks during the `verify` phase.
Remote repositories are provided for the Sonatype Nexus Snapshots and Nexus Release Code coverage must by 100% and all mutations must result in a test from the test suite failing.
Repositories. See the [OSSRH Guide](http://central.sonatype.org/pages/ossrh-guide.html)
for information on how to deploy your artifact the Maven Central through
Sonatype.
### Changing the Build Directory Set `pitest.skip` to avoid running the mutation test.
If you want to change the build directory, e.g. from your settings.xml to an SSD 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
or ram drive, then set the value of the `kemitix.build.directory` to your required
locations. e.g. 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
`<properties>
<kemitix.build.directory>/mnt/ramdrive/${project.groupId}/${project.artifactId}</kemitix.build.directory> #### Highwheel Cyclic Analysis
</properties>`
The [Highwheel Maven Plugin](https://github.com/hcoles/highwheel) 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](https://maven.apache.org/plugins/maven-source-plugin/) bundles your sources into a jar file ready for deployment.
Runs its [jar-no-fork](https://maven.apache.org/plugins/maven-source-plugin/jar-no-fork-mojo.html) goal during the `verify` phase.
#### Maven Javadoc Plugin
The [Maven Javadoc Plugin](https://maven.apache.org/plugins/maven-javadoc-plugin/) generates your html javadocs and bundles them into a jar file ready for deployment.
Runs its [jar](https://maven.apache.org/plugins/maven-javadoc-plugin/jar-mojo.html) goal during the `verify` phase.
#### Maven Deploy Plugin
The [Maven Deploy Plugin](https://maven.apache.org/plugins/maven-deploy-plugin/) uploads your artifacts to a remote repository.