5

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

是否可以通过此插件使用 PMD 4.2.5 版,如果可以,我们该怎么做?

4

2 回答 2

3

对此有一个 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>

我没有测试这个,我不知道它是否会无缝工作。

于 2010-01-09T12:14:48.043 回答
2

这是一个老问题,事情已经发生了变化,但我面临着将 maven-pmd-plugin:3.8 从 pmd 5.6.1 升级到 5.8.1 的挑战。在撰写本文时,maven-pmd-plugin 页面中缺少执行此操作的文档。

  1. 添加 pmd-core、pmd-java 和任何其他 mavenized PMD 工件作为插件依赖项。
  2. 如果您的规则包含在单独的 .jar 模块中,请将该模块也添加到依赖项中。
  3. 确保检查目标在编译阶段之后运行 -验证为时过早。(我选择了process-test-classes在运行任何测试之前调用它,而不是更常见的verify也可以,但稍后会运行它)。

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>
于 2017-09-12T15:06:41.623 回答