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

+0

필자 측에서는 약간의 테스트를했는데 실제로'build'에서 플러그인에 대해'dependencies'를 지정해도'reporting' 섹션에는 영향을 미치지 않는 것 같습니다. 그러나'reporting '아래에 종속성을 지정하는 것은 불가능하므로 실제로 이것을 해결하는 방법을 모르겠습니다 (maven-pmd-plugin을 패치하는 것을 제외하고). –

+0

예,보고 섹션에서는 종속성을 지정할 수 없습니다. 나는이 구성을 빌드 -> pluginManagement -> plugins -> plugin으로 옮겼지만 빌드 단계의 일부로이 작업을 수행 할 수 있는지 확인하려고합니다. – Joe

1

이것은 이전 질문 이었지만 많은 변화가있었습니다. maven-pmd-plugin 업그레이드는 여전히 어려웠습니다 : pmd 5.6.1에서 5.8.1로 3.8. 이 작업을 수행하기위한 설명서는 maven-pmd-plugin page에서 여전히 누락되었습니다.

  1. pmd-core, pmd-java 및 기타 maven 처리 된 PMD 아티팩트를 플러그인 종속성으로 추가합니다.
  2. 규칙이 별도의 .jar 모듈에 포함되어있는 경우 해당 모듈을 종속성에도 추가하십시오. 너무 빨리이다 검증 -
  3. 체크 목표는 상을 컴파일 후에 실행되어 있는지 확인합니다. (process-test-classes을 선택하여 평소보다 더 많은 테스트를 실행하기 전에 테스트를 수행합니다. 확인도 괜찮지 만 나중에 실행합니다.)

의 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

관련 문제