【发布时间】:2012-01-04 01:58:34
【问题描述】:
虽然我们是使用 SVN 进行源代码控制和使用 Apache Ivy 进行依赖管理的 Java 阵营,但这个问题广泛适用于任何平台/语言、SCM 和工件存储库工具。
我和我的技术主管率先迈出了公司使用 Ivy 之类的依赖管理器来管理我们所有 JAR 的第一步。我们已经建立了我们所谓的“Ivy Repo”,这是我们存放内部(由我们开发的)JAR 以及常用的依赖项(Apache JAR、Spring等)。
我们开始遇到这样的问题:开发人员必须对我们的内部 Commons JAR (Commons.jar) 进行更改,然后在代码更改经过代码审查、提交给 SVN 之前运行<ivy:publish>并从 CI 服务器构建。当开发人员在一个项目中处理错误修复或新功能时,会发生这种情况,但需要对 Commons.jar 等依赖项进行修改才能完成他们的任务。
因此,我们处于 Ivy 和 SVN 彼此不同步的情况。
显然,我们可以实例化一个规则,即在没有先与团队一起审查、提交和测试他们的代码的情况下,任何人都不得发布。或者,我们可以完全禁止开发者发布。
在采取任何一种方式之前(我们倾向于后者),我们想知道其他团队是否遇到过同样的问题,以及实施了哪些解决方案来防止这种情况发生。
也许像 Artifactory 或 SonaType 这样的工具值得研究,但我们都没有使用过它们的经验,而且看起来它们不支持这类业务规则。
简而言之:我们正在寻找一种方法来防止过早发布 JAR,以便发布始终是我们标准 code >> review >> commit > 中的最后阶段> CI >> deploy 循环。
提前致谢!
【问题讨论】:
标签: svn version-control ivy dependency-management