gradle - 如何管理 gradle 模块项目和应用程序之间的复合构建

标签 gradle build.gradle gradle-plugin

我正面临这个limitation / issue与 Gradle。
我有两个使用 Gradle 的多项目构建,我们称它们为 modules-technical , 和 modules-business .

这是我的setting.gradle对于 modules-business :

rootProject.name = 'modules-business'
include 'business-core'
.. snip business-* modules ..
includeBuild '../modules-technical/'

这意味着,modules-business取决于 modules-technical .

现在,我想开发一个依赖于 modules-business 的应用程序。 .
rootProject.name = 'my-app'
includeBuild '../modules-business'
includeBuild '../modules-technical'

由于 Gradle 4.2.1 的当前限制,我需要评论 includeBuild关于我的 modules-business 的声明项目。像这样:
rootProject.name = 'modules-business'
include 'business-core'
.. snip business-* modules ..
// includeBuild '../modules-technical/'

现在有没有更好的方法来管理这个限制?意思是,我如何使用 Gradle 复合构建开发多模块和应用程序?

最佳答案

你应该能够做到

if (settings.hasProperty('doCompositeBuilds') && doCompositeBuilds.toBoolean()) {
    includeBuild '../modules-technical/'
}

并设置doCompositeBuildstrue使用 modules-business 时和 false或在使用应用程序时保持未设置。

或者你可以有两个分支 modules-business , 一个与 includeBuild ,一个没有,然后使用你真正需要的那个。

关于gradle - 如何管理 gradle 模块项目和应用程序之间的复合构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46685953/

相关文章:

Gradle:无法存储任务输入属性。无法序列化值为 'myInput' 的属性 '[null]'

gradle - 无法在RAD 8中安装Gradle插件

Gradle 单项目插件管理 block 不起作用(Kotlin DSL)

Java QueryDSL 和 Gradle Kotlin DSL

android - 错误NotificationCompatIceCreamSandwich已被添加到输出中。请删除重复的副本

android - Gradle Android项目构建

gradle - Grails 4 - Gradle 'assemble' 任务不生成 .war.original 存档

java - Gradle 6 : get the list of implementation dependencies programmatically

java - Gradle Eclipse : 'Referenced Libraries' vs 'Project and External Dependencies'

android - 任务 ':app:mergeDebugResources'的Jenkins执行失败,找不到文件