如何让maven-pmd-plugin支持最新的PMD版本?

时间:2010-01-09 11:47:48

标签: maven-2 pmd

http://maven.apache.org/plugins/maven-pmd-plugin/目前的版本为2.4,支持PMD版本4.2.2

是否可以将PMD版本4.2.5与此插件一起使用,如果是这样,我们如何做到这一点?

2 个答案:

答案 0 :(得分:1)

对此有一个Jira问题,请参阅MPMD-97(我建议投票)。

目前,您可以尝试使用以下方法在本地升级插件中使用的pmd版本:

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>2.4</version>

        <dependencies>

          <dependency>
              <groupId>pmd</groupId>
              <artifactId>pmd-jdk14</artifactId>
              <version>4.2.5</version>
          </dependency>

        </dependencies>
      </plugin>
    </plugins>
  </build>

我没有对此进行测试,我不知道它是否可以无缝运行。

答案 1 :(得分:1)

这是一个老问题,事情已经发生了变化,但我仍面临着将maven-pmd-plugin升级为3.8的挑战:从pmd 5.6.1到5.8.1。 maven-pmd-plugin page

仍然缺少执行此操作的文档
  1. 将pmd-core,pmd-java和任何其他mavenized PMD工件添加为插件依赖项。
  2. 如果您的规则包含在单独的.jar模块中,请将该模块添加到依赖项中。
  3. 确保检查目标在编译阶段后运行 - 验证过早。 (我选择 process-test-classes 在运行任何测试之前调用它,而不是通常的验证,这也没关系,但稍后会运行它。)
  4. pom.xml配置:

    <properties>
        <rev.javac>1.8</rev.javac>
        <rev.pmd-plugin>3.8</rev.pmd-plugin>
        <rev.pmd>5.8.1</rev.pmd>
    </properties>
    
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>${rev.pmd-plugin}</version>
        <dependencies>
            <dependency>
                <groupId>my.project.group</groupId>
                <artifactId>project-standards</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>net.sourceforge.pmd</groupId>
                <artifactId>pmd-core</artifactId>
                <version>${rev.pmd}</version>
            </dependency>
            <dependency>
                <groupId>net.sourceforge.pmd</groupId>
                <artifactId>pmd-java</artifactId>
                <version>${rev.pmd}</version>
            </dependency>
        </dependencies>
        <executions>
            <execution>
                <id>pmd-validation</id>
                <phase>process-test-classes</phase>
                <goals>
                    <goal>check</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <rulesets>
                <ruleset>/pmd/project-pmd-rules.xml</ruleset>
            </rulesets>
            <targetDirectory>${project.build.directory}</targetDirectory>
            <targetJdk>${rev.javac}</targetJdk>
            <failOnViolation>true</failOnViolation>
            <failurePriority>5</failurePriority>
            <verbose>false</verbose>
            <linkXRef>false</linkXRef>
        </configuration>
    </plugin>