Gradle Maven 喜欢多模块项目

Gradle Maven like multi module project

当你在 Maven 中定义多模块项目时,你有一个根项目和它的模块。当你构建根项目时,Maven 会以正确的顺序传递地构建它的所有模块。到目前为止与 Gradle.

非常相似

但是使用 Maven,您可以从存储库中仅克隆一个子模块并在本地构建它,而无需下载整个项目结构。这是因为您在同一项目中定义对其他模块的依赖项,就像任何其他外部依赖项一样,并且它是从本地存储库 (Nexus) 下载和缓存的。

使用 Gradle,您将跨模块依赖关系定义为 compile project(':other')。因此,您需要从存储库中克隆整个项目结构才能正确解析和构建。有什么方法可以使用 Gradle 多模块项目支持,而无需在本地克隆整个项目结构?

我认为 Maven 的多模块支持是事后才想到的。与 Gradle 不同,项目依赖不是第一个 class 概念。相反,当 GAV (group/artifact/version) 匹配时,maven "reactor" 将本地工件替换为依赖项。

如果您想在 Gradle 中使用相同的方法,那么您可以使用 GAV 符号指定依赖项,然后使用新的 composite build feature 连接两个或多个单独的 gradle 构建在一起并将存储库依赖项替换为本地源依赖项。请注意,您可以使用 groovy 定义组合中包含的项目,因此您可以根据自定义逻辑轻松编写脚本(例如,如果某个根文件夹中存在子文件夹等)

注意复合构建支持是new feature added in Gradle 3.1. Prior to Gradle 3.1 you can use Prezi Pride实现相同