运行 Gradle 的 PMD 插件时在类路径中包含 jar

问题描述 投票:0回答:2

我尝试使用自定义规则集文件运行 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 新手,这有点令人困惑......

gradle pmd
2个回答
5
投票
pmd { ... }

时,您正在配置

扩展
。有时您可能需要下拉到任务级别并配置 tasks.pmd { ... }。 (具有相同名称的扩展和任务是代码质量和 IDE 扩展/任务使用的常见模式。)向 PMD 类路径添加内容的最简单方法是:

dependencies { pmd ... }

我还没有尝试过这是否适用于添加外部规则,但可能会。


0
投票

依赖项{

pmd 'com.pelatro.mviva:pmdcustomrules:develop' -> 示例

}

将 jar 解压到构建目录并将 xml 路径设置为ruleSetFiles 下午 {

ruleSetFiles = files("build/extractedFolder/pmd-rules.xml")

}

© www.soinside.com 2019 - 2024. All rights reserved.