处理SVN中的依赖关系

问题描述:

我正在与一个团队合作,该团队即将编写一大堆Java应用程序,作为大型项目的一部分。我们计划将SVN用于我们的源代码,但我们将依赖于其他一些不使用SVN的团队。他们基本上将编写一些我们将在我们的应用程序中使用的库(以.jar的形式)。处理SVN中的依赖关系

我知道如果每个人都在SVN上,我们可能会使用svn:externals,但在不久的将来似乎不可能。现在我们可能只会每周从他们那里得到更新的.jar文件。

我还是比较新的SVN,那么处理这个问题的正确程序是什么?我们是否将他们的.jar检入我们的存储库?或者我们应该避免在SCM中使用二进制文件吗?我们还探讨了通过Maven使用依赖管理......这似乎是在团队之间共享二进制文件的好选择,但我不确定我们是否真的想要复杂的东西。

+1

您目前的构建解决方案是什么?如果它是基于蚂蚁的,迁移到Maven可能会非常痛苦。在这种情况下,我会建议ivy跟踪依赖关系。 – Olaf 2011-05-25 18:19:16

检查库,尤其是第三方(在你的情况下,我认为你可以称他们为第三方),SVN(或任何SCM)不是什么大不了的事情,你从这种简单性中获得了很多收益。请注意,如果瓶子或库存过于庞大且频繁更换,则可能会出现更复杂的问题(如Maven,Ivy等)

SVN擅长处理二进制文件及其差异。

+0

也许Maven除了收集最新版本的库之外,什么都不做,然后将它们转储到SVN中,并使用简化的非版本化文件名? – 2011-05-25 18:26:13

+0

谢谢 - 这主要是我想知道的。库很小,所以这可能是最简单的路线。 – Andrew 2011-05-26 14:55:49

如果空间不是问题(在服务器上),我认为检查二进制文件甚至是您的依赖关系的源代码不是错误的。这对每个人来说都更容易,这样人们可以简单地结账并且没有太多麻烦地建立起来。

我建议阅读有关供应商分行:http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html

+0

不知道这个功能 - 可能比我们所需要的要多一点,但知道SVN有一个方法可以方便地使用它。 – Andrew 2011-05-26 14:58:32

如果二进制文件是很大,那么我肯定会避免到仓库检查它们。我的建议是将最新版本的jars存储在公共共享中,然后挂载到该共享并通过项目文件进行链接。这意味着只有一个人不得不更新二进制文件,而不是每台机器,只要登录商店的路径保持不变即可。

如果它们不是太大,那么检查它们进入回购并不是什么大不了的事情。

我发现依赖管理最好用maven或ivy版本库来完成。 Artifactory和Nexus有免费版本。然后,您可以从构建脚本管理它们。 Ivy如果您使用的是Ant,MavenGradle。我更喜欢Gradle。

+1

二进制存储库管理器是最好的方法(无耻的插件:Artifactory的+1); VCS或网络共享等临时依赖管理方法缺乏许多重要功能(二进制版本管理,细粒度安全,代理和缓存远程存储库,元数据等等)。 – noamt 2011-05-26 06:08:07

+0

谢谢 - 自问这个问题以来,我实际上已经能够启动并运行Maven。把事情配置得恰到好处是很棘手的,但是当它正确运行时我确实看到了很多好处。我将不得不玩一些场景来看看我的团队最容易。 – Andrew 2011-05-26 14:57:48