Maven依赖管理与subversion svn:外部用于企业应用程序

时间:2011-05-30 14:50:21

标签: svn build maven-scm

我是maven的新手。

给定企业级Java应用程序。源代码由subversion管理。

据我所知,一旦我对代码进行了修饰,我应该能够在5年后对其进行编译并获得相同的结果,但我有点担心maven是否可以100%准确地处理它:

  1. 当maven上网时它是否有可能带来损坏的jar(例如网络问题或镜像有不正确的jar)?
  2. 我想说我想在5年后重新编译我的代码。是否可能需要罐子不在那里?
  3. 企业应用程序依赖于这种“不透明”的外部资源(例如互联网镜像)是否存在风险。
  4. 在我之前的另一边,我们利用了svn:external - 我们在svn中为所有第3个产品(jar)提供了一个特殊目录(供应商分支)。对于每个产品及其特定版本,都有一个专用目录。应用程序代码使用svn external从供应商分支中提取具体jar。

    在这个配置中,我知道所有在源代码控制下的罐子,我将能够在5年后重建我的应用程序,并使用与5年前相同的罐子包装。

    我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

是的,它有风险,但有办法解决这个问题。

  1. 这种情况可能发生,而且实际上经常发生。但是,为了治愈损坏的下载,您只需从本地文件系统中删除该软件包并拍摄Maven即可重新下载。我不认为镜子中的软件包一旦出现就容易被破坏。
  2. 不知道维护者的官方用语是什么,但即使有人确保图书馆“将永远存在”,也可能发生硬件故障,公司出售,流程变更等等。只要你是相信别人而不是你自己,你无法确定。
  3. 是的。
  4. 要真正解决此问题,您可以使用NexusArchiva设置自己的存储库(另请参阅SO: Best enterprise repository tool for Maven 2?)。如果您已启动并运行自己的索引,则可以完全控制在未来几年内保护依赖关系库。当然,它可能仍会破裂:)

    如果您经营的是小型企业,我认为改变流程和建立自己的镜像会有什么好处(增值是什么?)。 svn:externals可能不是那么复杂的方法,但我个人也不认为它很糟糕。

    我还可以补充一点,Maven不仅仅是依赖管理。当你让Maven更多地控制你的项目时,会有越来越多的协同作用,所以如果你最终切换到Maven,那么还要依赖它的其他功能(更容易更新库,自动下载源,结构约定,插件架构,等)。