我試圖用自定義規則集文件運行PMD,但該規則集包含一個自定義類的規則。這個類存在於一個不是而是作爲依賴關係拉入的jar中,而是在一個zip文件(這是一個依賴項)中被解壓縮。想象一下PMD規則類只是在build/extralib/blah.jar
。在運行Gradle的PMD插件時在類路徑中包含jar
如何在運行PMD時將其包含在我的類路徑中?我已經試過,但沒有奏效:
pmd {
ruleSetFiles = files("build/utils/pmd-rules.xml")
pmdClasspath = files("build/extralib")
}
需要明確的是,該錯誤是:java.lang.ClassNotFoundException: com.package.for.pmd.CrazyRule
。運行pmdMain
時會發生這種情況。
第二個問題:Pmd和PmdExtension有什麼區別? Pmd有pmdClasspath
,但PmdExtension不。當我加入pmdClasspath
,我得到:
Creating properties on demand (a.k.a. dynamic properties) has been deprecated and is scheduled to be removed in Gradle 2.0. Please read http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html for information on the replacement for dynamic properties. Deprecated dynamic property: "pmdClasspath" on "[email protected]", value: "file collection".
所以我想,只有堅持PmdExtension?作爲一個Gradle新手,這有點令人困惑...
它似乎工作。我也必須手動添加PMD依賴項,但沒關係。因此,我有一個依賴:'pmd fileTree(dir:'build/extralib',包含:['* .jar'])'和'pmd'pmd:pmd:4.3''。我也擺脫了'pmdClasspath'。似乎工作。謝謝! – Depressio