在多项目 gradle 构建中,有人能告诉我“allprojects”部分和“buildscript”部分之间到底有什么区别吗?两者都有 repositories
和 dependencies
任务。 allprojects
适合我的项目吗? buildscript
呢?
buildscript {
repositories {
...
}
dependencies {
...
}
}
和
allprojects(subprojects) {
repositories {
...
}
dependencies {
...
}
}
“buildscript
”配置部分用于 gradle 本身(即更改 gradle 执行构建的方式)。所以这个部分通常会包含 Android Gradle 插件。
“allprojects
”部分用于 Gradle 构建的模块。
通常两者的存储库部分是相同的,因为两者通常都会从 jcenter(或者可能是 maven Central)获取它们的依赖项。但是“依赖项”部分会有所不同。
通常,“allprojects”的“依赖项”部分是空的,因为每个模块的依赖项都是唯一的,并且将位于每个模块内的“build.gradle”文件中。但是,如果所有模块都共享相同的依赖项,那么它们可以在此处列出。
TL;DR:buildscript
帮助查找插件,allprojects
适用于所有项目
https://docs.gradle.org/current/userguide/userguide_single.html#applyPluginBuildscript 说
通过将插件添加到构建脚本类路径然后应用插件,可以将已作为外部 jar 文件发布的二进制插件添加到项目中。
所以你需要 buildscript
让 gradle 找到插件,as
Gradle 的核心是有意为现实世界的自动化提供的很少。所有有用的功能,例如编译 Java 代码的能力,都是由插件添加的。插件添加新任务(例如 JavaCompile)、域对象(例如 SourceSet)、约定(例如 Java 源代码位于 src/main/java)以及从其他插件扩展核心对象和对象。
项目 API 提供了一个属性 allprojects,它返回一个包含当前项目及其下面的所有子项目的列表。如果使用闭包调用 allprojects,则闭包的语句将委托给与 allprojects 关联的项目。
build.gradle
中,而不是上面一个目录中的 build.gradle
,这个问题涉及
不定期副业成功案例分享
allprojects
?buildscript
属性内的classpath
属性是否会影响buildscript
属性外的dependencyManagement
属性?谢谢