前言
网上复制来,复制去,都不知道原因,瞎搞。故写了此篇文档;
以下代码,直接复制到pom.xml中就好使。
需求
阿里巴巴Java规约p3c-pmd与maven集成,实现maven package打包前校验,如果校验不通过则打包失败;
实现
在pom.xml的plugins节点里,添加如下代码即可实现:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<!--低版本site站点支持不好,会缺少css文件,导致生成的PMD.html打开页面不好看-->
<!-- <version>3.15.0</version>-->
<version>3.21.0</version>
<configuration>
<verbose>true</verbose>
<!-- 规范的配置 -->
<rulesets>
<ruleset>rulesets/java/ali-comment.xml</ruleset>
<ruleset>rulesets/java/ali-concurrent.xml</ruleset>
<ruleset>rulesets/java/ali-constant.xml</ruleset>
<ruleset>rulesets/java/ali-exception.xml</ruleset>
<ruleset>rulesets/java/ali-flowcontrol.xml</ruleset>
<ruleset>rulesets/java/ali-naming.xml</ruleset>
<ruleset>rulesets/java/ali-oop.xml</ruleset>
<ruleset>rulesets/java/ali-orm.xml</ruleset>
<ruleset>rulesets/java/ali-other.xml</ruleset>
<ruleset>rulesets/java/ali-set.xml</ruleset>
</rulesets>
<printFailingErrors>true</printFailingErrors>
</configuration>
<executions>
<execution>
<id>pmd-check-verify</id>
<phase>package</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
<execution>
<id>pmd-pmd-site</id>
<phase>site</phase>
<goals>
<goal>cpd</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.alibaba.p3c</groupId>
<artifactId>p3c-pmd</artifactId>
<version>2.1.1</version>
</dependency>
</dependencies>
</plugin>
以上涉及到的rulesets/java/ali-**.xml(阿里的校验规则文件)。使用的是dependency依赖过来的p3c-pmd里面的规则文件,故不需要单独额外创建
效果
执行maven package时,会先根据阿里规范进行代码校验,并且在项目下生成报告文件target\site\pmd.html
原理
阿里的p3c是基于maven PMD开发的,所以可以直接用。
详细看看官网PMD介绍即可