2

我们有许多由大量模块组成的产品,其中一些模块在一些产品之间共享。它们分布在几个版本控制存储库中。

产品由负责检查所有模块并以正确顺序构建它们的主 Ant 脚本构建。这些模块没有自己的发布周期。

现在,我非常想进行声明式依赖管理,但似乎所有解决方案(Maven、Ivy)都依赖于工件而不是版本控制下的源代码。依赖工件会给我们带来麻烦,所以我宁愿不这样做。我想要像 Ivy 这样的东西,但是我可以说我的产品依赖于模块 foo、bar 和 baz(分支 2.0),它会从一个或多个源代码管理器(在某些配置中指定)检查源代码到平坦的工作空间。

我计划使用 gradle 进行构建,因此非常感谢一个适合的解决方案......

4

2 回答 2

2

Gradle 嵌入了 ivy 项目以进行依赖管理,因此您将面临同样的问题。

依赖管理是一种机制,它可以将大型单体构建分解为较小的组件构建,每个构建都将其输出发布到一个公共存储库中以供其他依赖模块使用。

因此,这意味着您必须首先做出明智的决定来分解您的大型构建,或者只是满足于使用依赖管理来控制 3rd 方开源库。

假设您无法控制拥有多个 SCM 存储库的事实,我可以推荐以下方法来创建集中式构建(我假设您使用的是 ANT + subversion):

1) 创建一个包含您的子模块的主项目

2) 每个子模块作为外部定义添加到主项目中。这使得 master 的一个 checkout 可以反过来自动 checkout 每个子项目

3) build.xml主项目包含一个构建文件,该文件使用 ivy buildlist任务根据各个子项目ivy.xml文件中声明的依赖关系以正确的顺序构建子项目。

多项目构建的示例在这里

于 2010-06-21T17:27:34.880 回答
0

我认为 Refix 是你所追求的:http ://refix.codeplex.com/

于 2010-06-25T16:20:03.727 回答