我已经在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像这样工作?
答案 0 :(得分:0)
我认为该组织已经根据Maven和Gradle遵循约定而不是配置的原则创建了满足特定需求的构建系统。我特别建议您使用Apache Ant一个旧的构建系统,但这很棒。如果需要,您还可以根据需要使用Apache Ivy自定义构建。同样,它可能无法满足您提到的确切要求,但至少您可以做到。我认为建议遵循Maven或Gradle,使每个人都可以轻松使用。
正如JF Meier Sir所建议的那样,您可以创建多模块maven或gradle项目以获得更精细的方法。
答案 1 :(得分:0)
借助composite builds,您可以在Gradle中实现类似的目的。