如何根据存在的插件向子项目添加插件?

时间:2016-02-12 00:42:33

标签: gradle groovy

一些子项目有自己的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插件应用于每个子项目之外,还有什么方法吗?

1 个答案:

答案 0 :(得分:3)

您需要使用PluginContainer.withId()来执行此操作。如果已经应用了给定的插件,或者将来/当插件被应用时,这将立即评估给定的闭包。

subprojects {
    plugins.withId('java') {
        apply plugin: 'findbugs'
    }
}