在多项目 gradle 构建中,有人能告诉我“allprojects”部分和“subprojects”部分之间到底有什么区别吗?只是父目录?有人同时使用吗?如果是这样,您是否有一般规则来确定每个规则中通常放置的内容?
相关问题:这两种语法有什么区别(真的适用于所有项目和子项目):
subprojects { ...
}
和
configure(subprojects) { ...
}
你什么时候会一个比一个?
在多项目 gradle 构建中,有人能告诉我“allprojects”部分和“subprojects”部分之间到底有什么区别吗?只是父目录?有人同时使用吗?如果是这样,您是否有一般规则来确定每个规则中通常放置的内容?
相关问题:这两种语法有什么区别(真的适用于所有项目和子项目):
subprojects { ...
}
和
configure(subprojects) { ...
}
你什么时候会一个比一个?
在多项目 gradle 构建中,您有一个 rootProject 和子项目。两者的结合是 allprojects。rootProject 是构建的起点。一个常见的模式是 rootProject 没有代码,子项目是 java 项目。在这种情况下,您只将 java 插件应用于子项目:
subprojects {
apply plugin: 'java'
}
这相当于一个仅构建子模块的 maven 聚合 pom 项目。
关于这两种语法,它们做的事情完全相同。第一个看起来更好。
添加到 Ryan 的答案中,configure
当您想要配置对象的自定义子集时,该方法变得很重要。例如configure([project(":foo"), project(":bar")]) { ... }
或configure(tasks.matching { it.name.contains("foo") }) { ... }
。
何时使用allprojects
vs.subprojects
取决于具体情况。通常你会同时使用两者。例如,Java 插件等与代码相关的插件通常应用于 . subprojects
,因为在许多构建中,根项目不包含任何代码。另一方面,Eclipse 和 IDEA 插件通常应用于allprojects
. 如果有疑问,请查看示例和其他构建和/或实验。总体目标是避免不相关的配置。从这个意义上说,只要它给出预期的结果subprojects
就更好。allprojects