カスタム ルール セット ファイルを使用して PMD を実行しようとしていますが、そのルール セットにはカスタム クラスのルールが含まれています。このクラスは、依存関係としてプルされていないjar に存在しますが、代わりに (依存関係である) zip ファイルで提供され、解凍されます。PMD ルール クラスがちょうどbuild/extralib/blah.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 "org.gradle.api.plugins.quality.PmdExtension_Decorated@70221fc5", value: "file collection".
だから私はそれがPmdExtensionにのみ準拠していると思いますか? Gradleの初心者として、それは少し混乱しています...