如何使用不同的 pluginClasspath 在 gradle 中配置自定义 findbugs 任务
How to configure a custom findbugs task in gradle with a different pluginClasspath
我尝试使用 gradle 设置一个自定义的 findbugs 任务,它的 pluginClasspath 与默认的不同。
因此默认任务应使用默认的 FindBugs 规则,而自定义任务应使用 findbugs-security 规则。我的配置如下所示:
dependencies {
findbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.4.4'
}
findbugs {
// general config
}
task findbugsSecurity(type: FindBugs, dependsOn: classes) {
classes = fileTree(project.sourceSets.main.output.classesDir)
source = project.sourceSets.main.java.srcDirs
classpath = files()
pluginClasspath = files(configurations.findbugsPlugins.asPath)
}
但是,如果我现在 运行 findbugsMain 任务,它还包括来自 findbugs-security 的检查!
如何配置才能使 findbugs-security 检查仅在自定义任务中使用?
听起来配置 findbugsSecurity
任务也改变了 findbugsMain
的行为,您可能已经猜到了。
诀窍是使用新配置,因为 Gradle 会自动查找 findbugsPlugins 配置的依赖项,这将适用于 findbugs 的所有调用(参见 pluginClasspath part of FindBugs DSL):
configurations {
foo
}
dependencies {
// Important that we use a new configuration here because Gradle will use the findbugsPlugins configurations by default
foo 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.4.4'
}
findbugs { /* whatever */ }
task findbugsSecurity(type: FindBugs, dependsOn: classes) {
classes = fileTree(project.sourceSets.main.output.classesDir)
source = project.sourceSets.main.java.srcDirs
classpath = files()
pluginClasspath = files(configurations.foo.asPath)
}
我尝试使用 gradle 设置一个自定义的 findbugs 任务,它的 pluginClasspath 与默认的不同。
因此默认任务应使用默认的 FindBugs 规则,而自定义任务应使用 findbugs-security 规则。我的配置如下所示:
dependencies {
findbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.4.4'
}
findbugs {
// general config
}
task findbugsSecurity(type: FindBugs, dependsOn: classes) {
classes = fileTree(project.sourceSets.main.output.classesDir)
source = project.sourceSets.main.java.srcDirs
classpath = files()
pluginClasspath = files(configurations.findbugsPlugins.asPath)
}
但是,如果我现在 运行 findbugsMain 任务,它还包括来自 findbugs-security 的检查!
如何配置才能使 findbugs-security 检查仅在自定义任务中使用?
听起来配置 findbugsSecurity
任务也改变了 findbugsMain
的行为,您可能已经猜到了。
诀窍是使用新配置,因为 Gradle 会自动查找 findbugsPlugins 配置的依赖项,这将适用于 findbugs 的所有调用(参见 pluginClasspath part of FindBugs DSL):
configurations {
foo
}
dependencies {
// Important that we use a new configuration here because Gradle will use the findbugsPlugins configurations by default
foo 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.4.4'
}
findbugs { /* whatever */ }
task findbugsSecurity(type: FindBugs, dependsOn: classes) {
classes = fileTree(project.sourceSets.main.output.classesDir)
source = project.sourceSets.main.java.srcDirs
classpath = files()
pluginClasspath = files(configurations.foo.asPath)
}