I'm attempting to exclude a certain rule from pmd using the maven-pmd-plugin (in a multi-module maven project).
Approach:
Using the excludeFromFailureFile http://maven.apache.org/plugins/maven-pmd-plugin/examples/violation-exclusions.html
Ideally, I want to exclude this rule for the entire product (based on a parent package), however,to being with I tested for a particular class - even that is not working.
Environment
Java 7, Maven 3.0.3
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.1</version>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
<configuration>
<excludeFromFailureFile>exclude-pmd.properties</excludeFromFailureFile>
</configuration>
</execution>
<execution>
<goals>
<goal>cpd-check</goal>
</goals>
<!-- Added explicit execution Id to avoid the below problem -->
<!-- 'build.pluginManagement.plugins.plugin[org.apache.maven.plugins:maven-pmd-plugin].executions.execution.id' must be unique but found duplicate execution with id default @ line 1423, column 36 -->
<id>cpd-check</id>
</execution>
</executions>
Contents of exclude-pmd.properties
mycompany.project.classA=UselessParentheses
The simplest way to exclude rules, is providing your own ruleset file. You can see where to find the default ruleset file in the answer to this question. If you are using Sonar, you can retrieve the file using the permalink.
Copy the file to your parent module, and then you can customize it, deleting the rules you want to exclude, and use the following configuration:
in the parent
pom.xml
:in child modules
pom.xml
:in some module you want to skip (i.e contains generated code):
Hope this help!