这不完全是 Gradle 问题。但更一般的构建问题。我们有一些项目结构如下:
-- A (by team 1)
-- build.gradle
-- settings.gradle
-- B (by team 1,3)
--build.gradle
-- C (by team 2)
-- D (by team 3)
它们是独立的 CVS 模块。A、B 和 D 是 java 项目,由两个团队(团队 1,3)管理。C 是由另一个团队管理的 C++ 项目 (2)。B 通过 JNI 使用 C。(C是C++这个事实并不重要,关键是它是由另一个团队开发和管理的。)有两个应用程序,A是应用程序1的入口,A->B->C;而D是应用程序2的入口点,D->B->C. 发展通常涉及所有三个层面的变化。所有三个团队坐在一起并不断交流。在实践中,我们(团队 1)可能需要对 C 中的应用程序 1 进行一些更改;团队 2 在 C 上工作并给我们一个临时副本;集成后我们可能需要进行一些进一步的更改。我们会为了一个问题来回走几轮。同样适用于应用程序 2。
目前,A、B 和 D 由各种 ant 脚本管理,C 由 make 管理。我们开始探索新工具,尤其是 Gradle。在我们的第一个剪辑中,A 将 B 作为一个子项目(在 Gradle 意义上),它们总是一起构建和发布。我们也总是使用 C 的头文件(从 windows 中的源代码自己编译或获取最新的 Jenkins 构建),当我们对构建感到满意时,我们标记所有三个项目。我们最近采用了一个内部 Artifactory 存储库。我们正在考虑如何管理依赖和版本控制。完成后,我们也会将其介绍给模块 D 的团队 3。
- 我们可以尝试将 C 作为 A 的子项目,然后始终从头开始为所有三个构建。同样包括 C 和 B 作为 D 的子项目。例如,应用程序名称可以在版本名称中。
- 或者,我们总是可以依赖存储库中固定版本的 C。
在 2 中,我们不能完全依赖 C 的头部/快照,因为这可能涉及它们的开发并且可能不稳定。但是我们需要如此频繁地更改它们,以至于为每个 C 更改都放置一个新版本似乎是不切实际的。
我们想知道这种设置的最佳实践是什么?在互联网上快速搜索不会产生太多结果。谁能给我们一些建议或指点我一些书籍或文件?
太感谢了。