构建可以使用来自多个重新发布的依赖项的系统

Build system that can use dependencies from multiple repost

我在亚马逊担任软件工程师多年,但最近决定跳槽到另一家公司。在 Amazon 有一个自定义构建系统,称为 brazil。

它的工作方式是定义一个工作区,然后定义我在何处使用哪些包进行开发。举个例子:包 A 依赖于 B、C 和 D。当我创建我的工作区时,我会指定我需要在本地拥有 A 和 B。

将创建以下文件夹结构:

myServiceAWorkspace
 - .workspaceConfig
 - A/
 - A/src
 - A/tst
 - A/.packageConfig
 - B/
 - B/src
 - B/tst
 - B/.packageConfig

.packageConfig 包含有关依赖项以及如何构建项目的信息,很像 build.gradle

如果我去哪里去 A 文件夹和 运行 我们的构建命令,它会使用本地工作区中的 B 构建 A 包,但会使用我们存储库中的 C 和 D。 (来自 B 的任何依赖项也将从我们的存储库中使用,除非它们在本地工作区中检出)

我发现这非常强大,因为在不同服务之间共享包非常容易。

如果一直在寻找一个像这样工作的构建系统,但没有运气。有没有任何构建系统可以做到这一点,或者有什么方法可以让 Gradle 或 Maven 像这样工作?

我认为该组织已经为某种需要创建了一个构建系统,顺便说一句,Maven 和 Gradle 遵循约定优于配置的原则。我特别建议您根据需要使用 Apache Ant an old build system but it is great. If you want you can also use Apache Ivy 来自定义您的构建。同样,它可能无法满足您提到的确切要求,但至少您可以这样做。我觉得还是推荐跟随Maven或者Gradle,大家都可以轻松使用的。

正如 JF Meier Sir 所建议的,您可以创建多模块 Maven 或 gradle 项目以获得更细粒度的方法。

composite builds 的帮助下,您可以在 Gradle 中实现类似的目标。