tutorial - gradle使用




所有项目和子项目有什么区别? (2)

在多项目gradle build上,有人能告诉我“所有项目”部分和“子项目”部分之间的区别究竟是什么? 只是父目录? 有人使用两者吗? 如果是这样,你是否有通用的规则来确定通常在每一个中放置什么?

相关问题:两种语法之间有什么区别(对于所有项目和子项目而言):

subprojects {  ...
}

configure(subprojects) { ...
}

你什么时候会比另一个更好?


在多项目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 subprojectssubprojects取决于具体情况。 通常你会使用两者。 例如,像Java插件这样的代码相关插件通常应用于subprojects ,因为在许多构建中,根项目不包含任何代码。 另一方面,Eclipse和IDEA插件通常应用于allprojects 。 如果有疑问,请查看示例和其他构建和/或实验。 总体目标是避免不相关的配置。 从这个意义上说,只要预期的结果能够实现, subprojects就比allprojects subprojects都要allprojects





gradle