如何为包含所有子项目的项目设置依赖项?

How to set a dependency for a project with all subprojects?

我不喜欢我重复主项目和子项目的每个存储库依赖项(比方说,junit)。是否有可能使子项目使用主项目的依赖项。还是有其他方法可以避免这种重复?

root/build.gradle

allprojects {
    if (plugins.hasPlugin('java')) {
        dependencies {
            testCompile 'junit:junit:4.12'
        }
    }
}

与接受的答案不同,最好使用以下内容:

allprojects {
  plugins.withType(JavaPlugin) {
    dependencies {
      testCompile 'junit:junit:4.12'
    }
  }
}

如果 java 插件已经存在,更改将立即应用,或者将等待添加并稍后应用。

已更新

目前我使用更好的方法来控制插件的配置 - pluginManager。效果与 plugins.withType 相同,但您不必知道插件的 class 名称:

org.springframework.boot 插件示例:

apply plugin: 'org.springframework.boot'

allprojects {
  pluginManager.withPlugin('org.springframework.boot') {
    springBoot {
      buildInfo()
      layout 'DIR'
    }
  }
}