Answers:
在多项目gradle构建中,您具有rootProject和子项目。两者的结合是所有项目。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
给出预期结果要好。