Как заставить maven-pmd-plugin поддерживать последнюю версию PMD? - PullRequest
3 голосов
/ 09 января 2010

http://maven.apache.org/plugins/maven-pmd-plugin/ в настоящее время в версии 2.4, которая поддерживает PMD версии 4.2.2

Можно ли использовать PMD версии 4.2.5 с этим плагином, если да, то как нам это сделать?

Ответы [ 2 ]

1 голос
/ 12 сентября 2017

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

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

Для этого существует проблема 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>

Я не проверял это, я не знаю, будет ли это работать без проблем.

...