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

时间:2019-10-26 06:47:37

标签: maven gradle ant

我已经在Amazon担任软件工程师多年,但是最近决定搬到另一家公司。亚马逊上有一个自定义构建系统,称为巴西。

它的工作方式是我先定义一个工作区,然后定义我要在哪里使用哪些软件包进行开发。一个示例:程序包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像这样工作?

2 个答案:

答案 0 :(得分:0)

我认为该组织已经根据Maven和Gradle遵循约定而不是配置的原则创建了满足特定需求的构建系统。我特别建议您使用Apache Ant一个旧的构建系统,但这很棒。如果需要,您还可以根据需要使用Apache Ivy自定义构建。同样,它可能无法满足您提到的确切要求,但至少您可以做到。我认为建议遵循Maven或Gradle,使每个人都可以轻松使用。

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

答案 1 :(得分:0)

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