Как у нас могут быть разные наборы правил PMD в Maven для основного и тестового наборов кода Java? - PullRequest
0 голосов
/ 10 февраля 2019

В Gradle мы можем указать разные конфигурации PMD (включая разные наборы правил) для исходных наборов pmdMain и pmdTest.Например,

pmdMain {
    ruleSetFiles = files("$javaBuildSystemRoot/src-pmd-rulesets.xml")
}

pmdTest {
    ruleSetFiles = files("$javaBuildSystemRoot/test-pmd-rulesets.xml")
}

Мы хотим быть менее строгими в тестовом коде, чем основной код.

Существует отдельный проект на основе maven, в котором мы не можем использовать gradle в настоящее время. Но сейчас мы быхотел бы по крайней мере применить 2 различных набора правил, основанных на тесте main против.Это одномодульный проект, использующий плагин maven PMD.

Как это сделать в файле Maven pom?

1 Ответ

0 голосов
/ 10 февраля 2019

Это «довольно нетрадиционно» для pmd по тестовым источникам, но это не является частью вопроса.:)

Используя тег исполнения и используя maven-pmd-plugin , вы можете сделать это с помощью maven.


РЕДАКТИРОВАТЬ: Короче говоря и применяется к данному входу (и, возможно, больше, чем вы хотели / нужно), это позволяет / заставляет вас сделать обе проверки в каждой сборке :

<project><build><plugins>
<plugin>
    <artifactId>maven-pmd-plugin</artifactId>
    <version>3.11.0</version> <!-- latest up-to-date -->
    <executions>
       <execution>
           <id>pmd-execution</id>
           <goals>
               <goal>check</goal>
           </goals>
           <configuration>
               <rulesets>
                   <ruleset>${javaBuildSystemRoot}/src-pmd-rulesets.xml</ruleset>
               </rulesets>
           </configuration>
      </execution>
      <execution>
           <id>pmd-test-execution</id>
           <goals>
              <goal>check</goal>
           </goals>
           <configuration>
               <rulesets>
                   <ruleset>${javaBuildSystemRoot}/test-pmd-rulesets.xml</ruleset>
               </rulesets>
           </configuration>
        </execution>
    </executions>
</plugin>
...

См. Также: Можно ли настроить несколько исполнений плагинов в pluginManagement и выбрать из них в моем дочернем POM?


EDIT 2 : Если вам действительно не нужны «оба выполнения» (в 1 сборке), а только «две конфигурации» для «разных сборок» , тогда: Профили Maven соответствует вашим потребностям (с профилями ... ваши «возможности сходятся в бесконечность»)!

Вы бы ввели такие профили, как:

 <project>
 ...
 <profiles>
   <profile>
     <id>pmdMain</id>
     <properties>
         <myPmdRuleSetLocation>${javaBuildSystemRoot}/src-pmd-rulesets.xml</myPmdRuleSetLocation>
     </properties>
   </profile> 
   <profile>
     <id>pmdTest</id>
     <properties>
         <myPmdRuleSetLocation>${javaBuildSystemRoot}/test-pmd-rulesets.xml</myPmdRuleSetLocation>
     </properties>
   </profile> 
 <profiles>
 ...
 </project>

И использовали его в своем (single) Конфигурация плагина pmd:

...
  <ruleset>${myPmdRuleSetLocation}</ruleset>
...

Пожалуйста, читайте дальше о профилях и их активации.

(дополнительно <profile/> может продолжатьсяain & override <build/> tag!)

...