[英]PMD coulnd't find ruleset
我正在創建一個基於maven的java項目,其中包含PMD maven插件。 我使用自己的規則集XML,它就像一個魅力,除了兩個規則集: 空代碼和不必要的 :當我運行構建時,maven說:“ 找不到資源 ”。 角色定義如下:
<role ref="rulesets/emptycode" />
和
<role ref="rulesets/unnecessary" />
在其他所有情況下,這種定義都有效。 我發現的是:在ecmasrcipt類別下有一個名為“ 不必要 ”的規則集,所以這個定義可能需要一些使用java版本的建議。 我試過多次思考,比如規則集 xml節點的set 語言屬性(“JAVA”,基於PMD JavaDoc),以及ref中的一些pre-postfix,但它不起作用,我發現沒有可用的解決方案。 有人有想法,我忘記了什么,或者我失敗了什么? 謝謝你的幫助!
PMD似乎是Maven使用的一個可愛的野獸。 我剛剛用插件的3.0版來解決這個問題 - 有兩個解決方案:
快速而骯臟的解決方案 :在項目中放置規則集:
lib/pmd-xxxjar
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>
優點是這很容易,缺點是如果您將來更新PMD版本,您需要記住更新這些文件。
不錯的解決方案 :在pmd-xxxjar
引用規則集。
${basedir}/pmd/custom.xml
(請參閱http://pmd.sourceforge.net/pmd-5.0.2/howtomakearuleset.html ) <rule ref="rulesets/java/imports.xml"/>
pmd-xxxjar
內的路徑(參見上面的快速和臟) ,沒有前導斜杠 引用您的自定義規則集,如下所示:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-pmd-plugin</artifactId> <configuration> <rulesets> <ruleset>${basedir}/pmd/custom.xml</ruleset> </rulesets> </configuration> </plugin>
優點是它總是會引用PMD jar中的當前PMD規則集,缺點是它有點繁瑣而且要正確。
為了實驗這一點,直到它工作( maven-pmd-plugin
3.0版)我繼續運行mvn pmd:pmd( pom.xml
<linkXref>false</linkXref>
)並調整路徑,直到我停止收到錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.