2010-01-09 63 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

相關問題