我的pom.xml中有以下配置检查PMD违规:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>${pmd.version}</version>
<configuration>
<linkXRef>true</linkXRef>
<sourceEncoding>UTF-8</sourceEncoding>
<minimumTokens>100</minimumTokens>
<targetJdk>1.7</targetJdk>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
<goal>cpd-check</goal>
</goals>
</execution>
</executions>
</plugin>
当我使用命令mvn clean install
运行构建时,PMD检查作为构建过程的最后一步运行。相反,我希望PMD检查作为构建的第一步运行。
有人知道我怎么能做到这一点?
答案 0 :(得分:5)
将相元素添加到POM中。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>${pmd.version}</version>
<configuration>
<linkXRef>true</linkXRef>
<sourceEncoding>UTF-8</sourceEncoding>
<minimumTokens>100</minimumTokens>
<targetJdk>1.7</targetJdk>
</configuration>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>check</goal>
<goal>cpd-check</goal>
</goals>
</execution>
</executions>
</plugin>
验证阶段是maven生命周期的第一阶段:http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
答案 1 :(得分:2)
感谢您的回答@JamesB和@PetrMensik让我了解POM中的阶段元素。它帮助我解决了我的问题。我终于解决了这个问题:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>${pmd.version}</version>
<configuration>
<linkXRef>true</linkXRef>
<sourceEncoding>UTF-8</sourceEncoding>
<minimumTokens>100</minimumTokens>
<targetJdk>1.7</targetJdk>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>check</goal>
<goal>cpd-check</goal>
</goals>
</execution>
</executions>
</plugin>
我使用了阶段:编译,原因是我的项目中有大量测试需要花费大量时间来执行。并且,等待这些测试完成并在所有测试结束时收到有关PMD违规的通知非常恼人。在测试之前我需要一些东西。因此,我选择 编译 。
欢迎提供进一步的建议。 :)
答案 2 :(得分:1)
您需要将此插件的执行挂钩到不同的Maven生命周期阶段(validation
是默认生命周期中的第一个)。
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>check</goal>
<goal>cpd-check</goal>
</goals>
</execution>
</executions>
请参阅可用Maven阶段的list以供参考。
答案 3 :(得分:0)
我设置了构建配置
f