一直对为什么buildScript块里定义了repositories而allprojects段或根还定义repositories没有思考过,偶然有了念头想要探究一下。
build.gradle:
buildscript { repositories { ... } dependencies { ... } } | allprojects { repositories { ... } dependencies { ... } } | repositories { ... } dependencies { ... } |
buildScript块主要是为了Gradle脚本自身的执行,获取脚本依赖插件。我在写的一篇博客《尝试Artifactory》中Gradle脚本需要com.jfrog.artifactory插件才能执行成功,而这个插件是从URL为https://plugins.gradle.org/m2/的Maven仓库获得。 根级别的repositories主要是为了当前项目提供所需依赖包,比如log4j、spring-core等依赖包可从mavenCentral仓库获得。 allprojects块的repositories用于多项目构建,为所有项目提供共同所需依赖包。而子项目可以配置自己的repositories以获取自己独需的依赖包。
参考
What’s the difference between buildscript and allprojects in build.gradle?
Gradle buildscript dependencies
Gradle: Project