一些子项目有自己的build.gradle文件应用的java插件。在根项目的build.gradle中,我想将插件findbugs应用于已经拥有java插件的每个子项目。在build.gradle中,我尝试过:
configure(subprojects.findAll {proj -> proj.getPluginManager().hasPlugin("java")}) {
apply(plugin: "findbugs")
}
和
subprojects {
if (getPluginManager().hasPlugin("java")) {
apply(plugin: "findbugs")
}
}
对于每个子项目,外部循环确实运行一次,但在两种情况下,内部闭包都不会运行。 我怀疑这是因为子项目构建脚本在外部脚本之前生效。除了手动将findbugs插件应用于每个子项目之外,还有什么方法吗?
答案 0 :(得分:3)
您需要使用PluginContainer.withId()
来执行此操作。如果已经应用了给定的插件,或者将来/当插件被应用时,这将立即评估给定的闭包。
subprojects {
plugins.withId('java') {
apply plugin: 'findbugs'
}
}