Merge branch 'pr-2314' #2314

[doc] maven integration - Add version to plugin
This commit is contained in:
Andreas Dangel
2020-03-21 12:14:24 +01:00
2 changed files with 52 additions and 5 deletions

View File

@ -2,7 +2,8 @@
title: Maven PMD Plugin
tags: [userdocs, tools]
permalink: pmd_userdocs_tools_maven.html
last_updated: August 2017
last_updated: March 2020
mpmd_version: 3.13.0
author: >
Miguel Griffa <mikkey@users.sourceforge.net>,
Romain PELISSE <belaran@gmail.com>,
@ -13,6 +14,36 @@ author: >
### Running the pmd plugin
#### Choosing the plugin version
When adding the maven-pmd-plugin to your pom.xml, you need to select a version. To figure out the
latest available version, have a look at the official [maven-pmd-plugin documentation](https://maven.apache.org/plugins/maven-pmd-plugin/).
As of {{ page.last_updated }}, the current plugin version is **{{ page.mpmd_version }}**.
The version of the plugin should be specified in `<build><pluginManagement/></build>` and if using the project
report additionally in `<reporting><plugins/></reporting>` elements. Here's an example for the pluginManagement
section:
```xml
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>{{ page.mpmd_version }}</version>
</plugin>
</plugins>
</pluginManagement>
</build>
```
When defining the version in the pluginManagment section, then it doesn't need to be specified in the normal plugins
section. However, it should additionally be specified in the reporting section.
More information, see [Guide to Configuring Plugin-ins](https://maven.apache.org/guides/mini/guide-configuring-plugins.html).
#### Generating a project report
To include the PMD report in the project reports section add the following lines under
@ -26,6 +57,7 @@ the reports element in your pom.xml:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>{{ page.mpmd_version }}</version>
</plugin>
</plugins>
</reporting>
@ -58,8 +90,11 @@ PMD finds some violations. Therefore the `check` goal is used:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>{{ page.mpmd_version }}</version> <!-- or use version from pluginManagement -->
<configuration>
<failOnViolation>true</failOnViolation> <!-- this is actually true by default, but can be disabled -->
<!-- failOnViolation is actually true by default, but can be disabled -->
<failOnViolation>true</failOnViolation>
<!-- printFailingErrors is pretty useful -->
<printFailingErrors>true</printFailingErrors>
</configuration>
<executions>
@ -87,11 +122,13 @@ you add `cpd-check` as a goal.
To specify a ruleset, simply edit the previous configuration:
``` xml
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>{{ page.mpmd_version }}</version>
<configuration>
<rulesets>
<ruleset>/rulesets/java/quickstart.xml</ruleset>
@ -102,6 +139,7 @@ To specify a ruleset, simply edit the previous configuration:
</plugin>
</plugins>
</reporting>
```
The value of the 'ruleset' element can either be a relative address, an absolute address or even an url.
@ -117,23 +155,30 @@ will be able to resolve those other ruleset references.
When using the Maven PMD plugin 3.8 or later along with PMD 5.6.0 or later, you can enable incremental analysis to
speed up PMD's execution while retaining the quality of the analysis. You can additionally customize where the cache is stored::
```xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>{{ page.mpmd_version }}</version> <!-- or use version from pluginManagement -->
<configuration>
<analysisCache>true</analysisCache> <!-- enable incremental analysis -->
<analysisCacheLocation>${project.build.directory}/pmd/pmd.cache</analysisCacheLocation> <!-- Optional: points to this location by default -->
<!-- enable incremental analysis -->
<analysisCache>true</analysisCache>
<!-- analysisCacheLocation: optional - points to the following location by default -->
<analysisCacheLocation>${project.build.directory}/pmd/pmd.cache</analysisCacheLocation>
</configuration>
</plugin>
```
#### Other configurations
The Maven PMD plugin allows you to configure CPD, targetJDK, and the use of XRef to link
the report to html source files, and the file encoding:
```xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>{{ page.mpmd_version }}</version> <!-- or use version from pluginManagement -->
<configuration>
<linkXRef>true</linkXRef>
<sourceEncoding>ISO-8859-1</sourceEncoding>
@ -141,6 +186,7 @@ the report to html source files, and the file encoding:
<targetJdk>1.4</targetJdk>
</configuration>
</plugin>
```
#### Upgrading the PMD version at runtime
@ -162,7 +208,7 @@ Maven plugin will use and benefit from the latest bugfixes and enhancements:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.8</version>
<version>{{ page.mpmd_version }}</version>
<dependencies>
<dependency>
<groupId>net.sourceforge.pmd</groupId>

View File

@ -99,6 +99,7 @@ implementations, and their corresponding Parser if it exists (in the same packag
### External Contributions
* [#2312](https://github.com/pmd/pmd/pull/2312): \[apex] Update ApexCRUDViolation Rule - [Joshua S Arquilevich](https://github.com/jarquile)
* [#2314](https://github.com/pmd/pmd/pull/2314): \[doc] maven integration - Add version to plugin - [Pham Hai Trung](https://github.com/gpbp)
* [#2353](https://github.com/pmd/pmd/pull/2353): \[plsql] xmlforest with optional AS - [Piotr Szymanski](https://github.com/szyman23)
{% endtocmaker %}