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

How to manage composite builds between gradle modules projects and applications

我正面临 limitation / issue 和 Gradle。
我有两个 Gradle 的多项目构建,我们称它们为 modules-technicalmodules-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 当前的限制,我需要在我的 modules-business 项目中评论 includeBuild 声明。像这样:

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

目前是否有更好的方法来管理此限制?意思是,我如何使用 Gradle 复合构建来开发多模块和应用程序?

你应该可以做到

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

并在使用 modules-business 时将 doCompositeBuilds 设置为 true,在使用应用程序时设置为 false 或保持不变。

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