Maven 2.x PMD Plugin

PMD plugin <configuration> should accept dependency entries

Details

  • Type: New Feature New Feature
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Won't Fix
  • Affects Version/s: None
  • Fix Version/s: None
  • Component/s: None
  • Labels:
    None
  • Number of attachments :
    0

Description

As described here:

http://maven.apache.org/plugins/maven-pmd-plugin/howto.html

The PMD plugin supports configuration of custom ruleset XML files. But in our organization, we have written custom ruleset XMLs that refer Java classes (our PMD extension dependencies). The configuration of the PMD plugin should allow these dependencies to be specified.

Since we do not have this feature in the current release, we at our organization are forced to maintain a fork of the PMD plugin with the necessary dependencies added.

A suggested format:

<configuration>
<rulesets>
<ruleset>/rulesets/basic.xml</ruleset>
<ruleset>/rulesets/controversial.xml</ruleset>
<ruleset>d:\rulesets\strings.xml</ruleset>
<ruleset>http://localhost/design.xml</ruleset>
</rulesets>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>

<format>xml</format>
<linkXref>true</linkXref>
<sourceEncoding>utf-8</sourceEncoding>
<minimumTokens>100</minimumTokens>
</configuration>

Issue Links

Activity

Hide
Carlos Sanchez added a comment -

Have you tried setting <dependencies> inside <plugin>
That's how it should work

Show
Carlos Sanchez added a comment - Have you tried setting <dependencies> inside <plugin> That's how it should work
Hide
Subhash Chandran added a comment -

We tried that. We are getting this exception trace:

---------------------------start trace-----------------------------

Reason: Parse error reading POM. Reason: Unrecognised tag: 'dependencies' (position: START_TAG seen ...</configuration>\n\n\t\t<dependencies>... @94:17)

[INFO] ----------------------------------------------------------------------------
[INFO] Trace
org.apache.maven.reactor.MavenExecutionException: Parse error reading POM. Reason: Unrecognised tag: 'dependencies' (position: START_TAG seen ...</configuration>\n\n\t\t<dependencies>... @94:17)
at org.apache.maven.DefaultMaven.getProjects(DefaultMaven.java:365)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:278)

---------------------------end trace-----------------------------

Note that we are trying this in M2.0.2 release. Is this <dependencies> support inside <plugin> part of the yet to be released M2.0.3?

Show
Subhash Chandran added a comment - We tried that. We are getting this exception trace: ---------------------------start trace----------------------------- Reason: Parse error reading POM. Reason: Unrecognised tag: 'dependencies' (position: START_TAG seen ...</configuration>\n\n\t\t<dependencies>... @94:17) [INFO] ---------------------------------------------------------------------------- [INFO] Trace org.apache.maven.reactor.MavenExecutionException: Parse error reading POM. Reason: Unrecognised tag: 'dependencies' (position: START_TAG seen ...</configuration>\n\n\t\t<dependencies>... @94:17) at org.apache.maven.DefaultMaven.getProjects(DefaultMaven.java:365) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:278) ---------------------------end trace----------------------------- Note that we are trying this in M2.0.2 release. Is this <dependencies> support inside <plugin> part of the yet to be released M2.0.3?
Hide
Carlos Sanchez added a comment -

It worked since 2.0

http://maven.apache.org/ref/2.0.3-SNAPSHOT/maven-model/maven.html

<build>
<plugins>
<plugin>
<groupId/>
<artifactId/>
<version/>
<dependencies>
<dependency>
<groupId/>
<artifactId/>
<version/>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>

Show
Carlos Sanchez added a comment - It worked since 2.0 http://maven.apache.org/ref/2.0.3-SNAPSHOT/maven-model/maven.html <build> <plugins> <plugin> <groupId/> <artifactId/> <version/> <dependencies> <dependency> <groupId/> <artifactId/> <version/> </dependency> </dependencies> </plugin> </plugins> </build>
Hide
Brett Porter added a comment -

It's a known issue that <reporting> doesn't. The bug is in core, and checkstyle has a similar issue.

Show
Brett Porter added a comment - It's a known issue that <reporting> doesn't. The bug is in core, and checkstyle has a similar issue.
Hide
Brett Porter added a comment -

one workaround to try is putting the dependency on the site plugin in the build section.

Show
Brett Porter added a comment - one workaround to try is putting the dependency on the site plugin in the build section.
Hide
Subhash Chandran added a comment -

I have located the core issue:

http://jira.codehaus.org/browse/MNG-2173

Can this issue be linked to that one, or should this one be closed?

Show
Subhash Chandran added a comment - I have located the core issue: http://jira.codehaus.org/browse/MNG-2173 Can this issue be linked to that one, or should this one be closed?
Hide
John Allen added a comment -

workaround described in MNG-2173

Show
John Allen added a comment - workaround described in MNG-2173
Hide
Pavel Muller added a comment -

I use the following approach and it works fine:

<build>
<extensions>
<extension>
<groupId>cz.aspectworks</groupId>
<artifactId>cz.aspectworks.build</artifactId>
<version>0.2.0</version>
</extension>
</extensions>
[SNIP]

I've got my PMD and checkstyle config files on classpath.

Show
Pavel Muller added a comment - I use the following approach and it works fine: <build> <extensions> <extension> <groupId>cz.aspectworks</groupId> <artifactId>cz.aspectworks.build</artifactId> <version>0.2.0</version> </extension> </extensions> [SNIP] I've got my PMD and checkstyle config files on classpath.
Hide
Arnaud Heritier added a comment -

It's working (for now) to add it as an extension because it adds it in a classloader available for maven's core and plugins but it's not something that we would like to recommand.
Extensions mechanism is used to add new functionnalities in maven and not to share data between plugins.
We prefer that you add this dependency in the plugin dependency :

<build>
 <plugins>
  <plugin>
   <artifactId>maven-pmd-plugin</artifactId>
   <dependencies>
    <dependency>
     <groupId>cz.aspectworks</groupId>
     <artifactId>cz.aspectworks.build</artifactId>
     <version>0.2.0</version>
    </dependency>
   </dependencies>
  </plugin>
 </plugins>
</build>
Show
Arnaud Heritier added a comment - It's working (for now) to add it as an extension because it adds it in a classloader available for maven's core and plugins but it's not something that we would like to recommand. Extensions mechanism is used to add new functionnalities in maven and not to share data between plugins. We prefer that you add this dependency in the plugin dependency :
<build>
 <plugins>
  <plugin>
   <artifactId>maven-pmd-plugin</artifactId>
   <dependencies>
    <dependency>
     <groupId>cz.aspectworks</groupId>
     <artifactId>cz.aspectworks.build</artifactId>
     <version>0.2.0</version>
    </dependency>
   </dependencies>
  </plugin>
 </plugins>
</build>

People

Vote (4)
Watch (9)

Dates

  • Created:
    Updated:
    Resolved: