所有项目和子项目有什么区别?
在一个多项目的gradle build上,有人能告诉我“allprojects”部分和“subprojects”部分之间的区别究竟是什么? 只是父目录? 有人使用两个? 如果是这样,你是否有通用的规则来决定通常在每一个中放置什么?
相关问题:这两种语法之间有什么区别(对于所有项目和子项目来说都是如此):
subprojects { ... }
和
configure(subprojects) { ... }
你什么时候会比另一个更好?
在多项目gradle构build中,您有一个rootProject和子项目。 两者的结合是所有的项目。 rootProject是构build的起点。 常见模式是rootProject没有代码,子项目是java项目。 在这种情况下,您只能将java插件应用于子项目:
subprojects { apply plugin: 'java' }
这相当于一个只是构build子模块的maven聚合pom项目。
关于这两种语法,他们完全一样。 第一个看起来更好。
添加到Ryan的答案, configure
方法变得重要,当你想configuration对象的自定义子集。 例如configure([project(":foo"), project(":bar")]) { ... }
或configure(tasks.matching { it.name.contains("foo") }) { ... }
。
何时使用allprojects
subprojects
与subprojects
取决于具体情况。 通常你会使用两者。 例如,与Java插件相关的代码相关插件通常应用于subprojects
,因为在许多构build中,根项目不包含任何代码。 Eclipse和IDEA插件通常应用于allprojects
。 如果有疑问,请查看示例和其他构build和/或实验。 总体目标是避免不相关的configuration。 从这个意义上讲,只要能够达到预期的效果, subprojects
比allprojects
subprojects
都要allprojects
。
- Android Gradle的Apache HttpClient不存在?
- 不同的android风格的通用代码
- 在Android Studio中,Gradle错误“Attribute”xxx“已被定义”
- Android Studio无法通过错误org.gradle.process.internal.ExecException进行debugging
- 无法更改configuration的依赖关系(启用即时运行后)
- 使用gradlew和gradle的区别
- 将Volley(或其他库)合并到Android Studio项目中的最佳方法
- 错误:执行任务':app:packageRelease'失败。 >无法计算/../AndroidStudioProjects/../classes.jar的散列
- 如何在Android Studio中停止执行Gradle任务?