2010-01-09 4 views

ответ

1

Для этого есть проблема с Джирой, см. 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' не влияет на раздел' reporting'. Тем не менее, невозможно определить зависимости под 'report', поэтому я действительно не знаю, как это решить (за исключением исправления maven-pmd-плагина). –

+0

Да, раздел отчетов не позволяет указывать зависимости. Я как бы переместил эту конфигурацию внутри build -> pluginManagement -> plugins -> plugin, но я проверяю, могу ли я заставить это работать как часть фазы сборки – Joe

1

Это старый вопрос, и все изменилось, но я все еще сталкивался с проблемой обновления maven-pmd-plugin: 3.8 от pmd 5.6.1 до 5.8.1. Документация для этого все еще отсутствует в maven-pmd-plugin page.

  1. Добавить pmd-core, pmd-java и любые другие измененные артефакты PMD в качестве зависимостей плагина.
  2. Если ваши правила содержатся в отдельном модуле .jar, добавьте этот модуль в зависимости.
  3. Убедитесь, что проверки цели запустить послекомпилировать фазы - Validate слишком скоро. (Я выбрал 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