所有项目和子项目之间的区别是什么

在一个多项目的分级构建中,有人能告诉我“全部项目”部分和“子项目”部分到底有什么不同吗?只有家长目录吗?有人两种都用吗?如果是的话,您是否有一般规则来确定通常在每个文件中放入什么内容?

相关问题: 这两种语法(实际上是针对所有项目和子项目)之间的区别是什么:

subprojects {  ...
}

还有

configure(subprojects) { ...
}

你们什么时候才会一个接一个?

54345 次浏览

在多项目分级构建中,您有一个 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") }) { ... }

什么时候使用 allprojectssubprojects取决于具体情况。通常你会两者兼用。例如,像 Java 插件这样的代码相关插件通常应用于 subprojects,因为在许多构建中,根项目不包含任何代码。另一方面,Eclipse 和 IDEA 插件通常应用于 allprojects。如果有疑问,看看示例和其他构建和/或实验。总体目标是避免不相关的配置。从这个意义上说,只要 subprojects能给出预期的结果,它就比 allprojects好。