Build.gradle 中的 buildscript 和所有项目之间的区别是什么?

在多项目分级构建中,有人能告诉我“ allproject”部分和“ buildscript”部分的确切区别吗?两者都有一个 repositoriesdependencies任务。allprojects是我的项目吗?那 buildscript呢?

buildscript {
repositories {
...
}
dependencies {
...
}
}

还有

allprojects(subprojects) {
repositories {
...
}
dependencies {
...
}
}
36485 次浏览

buildscript”配置部分是用于 gradle 本身的(也就是说,更改 gradle 执行构建的方式)。所以这一部分通常会包括 Android Gradle 插件。

allprojects”部分针对的是由 Gradle 构建的模块。

存储库部分对于两者通常是相同的,因为两者通常都从 jcenter (或者可能是 maven central)获得依赖关系。但是“依赖关系”部分将不同。

通常“ allproject”的“依赖项”部分是空的,因为每个模块的依赖项都是唯一的,并且位于每个模块中的“ build.gradle”文件中。但是,如果所有的模块共享相同的依赖项,那么它们可以在这里列出。

DR: buildscript帮助查找插件,allprojects适用于所有项目


Https://docs.gradle.org/current/userguide/userguide_single.html#applypluginbuildscript 说

作为外部 jar 文件发布的二进制插件可以通过将该插件添加到构建脚本类路径,然后应用该插件来添加到项目中。

因此,你需要 buildscript为梯度,以找到插件,作为

它的核心是有意为现实世界的自动化提供很少的东西。所有有用的特性,比如编译 Java 代码的能力,都是通过插件添加的。插件添加新的任务(例如 JavaCompile) ,域对象(例如 SourceSet) ,约定(例如 Java 源位于 src/main/Java) ,以及从其他插件扩展核心对象和对象。

关于 allprojects :

ProjectAPI 提供了一个属性 allprojects,它返回一个包含当前项目及其所有子项目的列表。如果使用闭包调用 allprojects,则闭包的语句将委托给与 allprojects关联的项目。