2010-01-09 130 views

回答

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> 

我没有测试这一点,我不知道这是否会无缝地工作。

+0

我在尝试你的建议的过程,但我需要JDK 1.5的支持(PMD-JDK14使得JDK 1.4兼容) 使上述变化导致插件检索更新版本的PMD,但它仍然不断生成PMD 4.2.2报告。 我不知道为什么会发生这种情况,但会让你张贴在结果上。 – Joe 2010-01-11 11:47:19

+0

我在我身边进行了一些测试,看起来确实在'build'下为插件指定'dependencies'并不会影响'reporting'部分。但是,在'reporting'下指定依赖关系是不可能的,所以我实际上不知道如何解决这个问题(除了修补maven-pmd-plugin)。 – 2010-01-11 22:52:25

+0

是的,报告部分不允许您指定依赖关系。我在build - > pluginManagement - > plugins - > plugin中移动了这个配置,但是我正在验证是否可以将它作为构建阶段的一部分运行。 – Joe 2010-01-12 04:43:32

1

这是一个老问题,事情已经开始,但我仍然面临着将maven-pmd-plugin:3.8从pmd 5.6.1升级到5.8.1的挑战。 maven-pmd-plugin page仍然缺少这样做的文档。

  1. 将pmd-core,pmd-java和其他任何maven化的PMD构件添加为插件依赖项。
  2. 如果您的规则包含在单独的.jar模块中,那么还要将该模块添加到依赖项中。
  3. 确保检查目标运行编译阶段 - 验证是太快了。 (我选择了进程测试类在任何测试运行之前调用它,而不是更常见的验证,这也是可以的,但稍后会运行它)。

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> 
+0

完美无瑕的作品 – cabaji99 2017-10-19 19:29:20

相关问题