版本控制中多模块源项目的声明性依赖性处理

时间:2010-06-21 12:30:59

标签: dependencies ivy dependency-management gradle refix

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

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

现在,我非常想进入声明性依赖管理,但似乎所有解决方案(Maven,Ivy)都依赖于工件而不是版本控制下的源代码。根据工件的不同,我们会把事情转变为头脑,所以我宁愿不这样做。我喜欢像Ivy这样的东西,但我可以说我的产品依赖于模块foo,bar和baz(分支2.0),它会从一个或多个源代码管理器(在某些配置中指定)检查源代码一个平坦的工作空间。

我打算使用gradle进行构建,因此非常感谢适合的解决方案......

2 个答案:

答案 0 :(得分:2)

Gradle将常春藤项目嵌入其依赖管理中,因此您将面临同样的问题。

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

所以这意味着你必须首先做出一个分解你的大型构建的有意识的决定,或者只是决定使用依赖管理来控制第三方开源库。

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

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

2)每个子模块作为external定义添加到主项目中。这使得一次检查主人可以自动检出每个子项目

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

多项目构建的示例是here

答案 1 :(得分:0)

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