可以使用来自多个转发的依赖关系的构建系统

问题描述 投票:1回答:2

我曾在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像这样工作?

maven gradle ant
2个回答
0
投票

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

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


0
投票

您可以在composite builds的帮助下在Gradle中实现类似的功能。

© www.soinside.com 2019 - 2024. All rights reserved.