vvi*_*ton 2 java pmd maven-plugin pom.xml
我正在创建一个基于maven的java项目,其中包含PMD maven插件.我使用自己的规则集XML,它就像一个魅力,除了两个规则集:空代码和不必要的:当我运行构建时,maven说:" 找不到资源 ".角色定义如下:
<role ref="rulesets/emptycode" />
Run Code Online (Sandbox Code Playgroud)
和
<role ref="rulesets/unnecessary" />
Run Code Online (Sandbox Code Playgroud)
在其他所有情况下,这种定义都有效.我发现的是:在ecmasrcipt类别下有一个名为" 不必要 " 的规则集,所以这个定义可能需要一些使用java版本的建议.我试过多次思考,比如规则集 xml节点的set 语言属性("JAVA",基于PMD JavaDoc),以及ref中的一些pre-postfix ,但它不起作用,我发现没有可用的解决方案.有人有想法,我忘记了什么,或者我失败了什么?谢谢你的帮助!
PMD似乎是Maven使用的一个可爱的野兽.我刚刚用插件的3.0版来解决这个问题 - 有两个解决方案:
快速而肮脏的解决方案:在项目中放置规则集:
lib/pmd-x.x.x.jar rulesets/<type>/<ruleset>.xml您要使用的文件${basedir}/pmd/...参考如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<configuration>
<rulesets>
<ruleset>${basedir}/pmd/<ruleset>.xml</ruleset>
</rulesets>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
优点是这很容易,缺点是如果您将来更新PMD版本,您需要记住更新这些文件.
很好的解决方案:参考规则集pmd-x.x.x.jar.
${basedir}/pmd/custom.xml请参阅http://pmd.sourceforge.net/pmd-5.0.2/howtomakearuleset.html)<rule ref="rulesets/java/imports.xml"/>pmd-x.x.x.jar(参见上面的快速和脏),没有前导斜杠引用您的自定义规则集,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<configuration>
<rulesets>
<ruleset>${basedir}/pmd/custom.xml</ruleset>
</rulesets>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
优点是它总是会引用PMD jar中的当前PMD规则集,缺点是它有点繁琐而且要正确.
为了实验这一点,直到它工作(maven-pmd-plugin版本3.0)我继续运行mvn pmd:pmd(<linkXref>false</linkXref>in pom.xml)并调整路径,直到我停止收到错误.