Maven依赖关系管理vs subversion svn:企业应用程序的外部

Maven依赖关系管理vs subversion svn:企业应用程序的外部,svn,build,maven-scm,Svn,Build,Maven Scm,我是马文的新手 给定企业级Java应用程序。源代码由subversion管理 据我所知,一旦我对代码进行了裁剪,我应该能够在5年后编译它并获得相同的结果,但我有点担心maven是否能够100%准确地处理它: 当maven进入互联网时,它是否可能带来损坏的jar(例如,网络问题或镜像有不正确的jar) 假设5年后我想重新编译代码。有没有可能不在那里 企业应用程序依赖这种“不透明”的外部源(如internet镜像)是否有风险 从另一个角度来看,在我之前的位置,我们利用了svn:external——我

我是马文的新手

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

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

  • 当maven进入互联网时,它是否可能带来损坏的jar(例如,网络问题或镜像有不正确的jar)
  • 假设5年后我想重新编译代码。有没有可能不在那里
  • 企业应用程序依赖这种“不透明”的外部源(如internet镜像)是否有风险
  • 从另一个角度来看,在我之前的位置,我们利用了svn:external——我们在svn中有一个专门的目录(供应商分支),用于所有第三代产品(JAR)。每个产品及其特定版本都有一个专用目录。应用程序代码用于从供应商分支获取具体的jar

    在这个配置中,我知道所有受源代码控制的JAR,我将能够在5年后重建我的应用程序,并使用5年前相同的JAR对其进行打包


    我错过了什么吗?

    是的,这很危险,但有办法解决这个问题

  • 这是可能发生的,而且事实上经常发生。但是,要修复损坏的下载,您只需从本地文件系统中删除包,然后让Maven重新下载。我不认为镜像中的包一旦存在就容易损坏
  • 不知道维护人员的官方说法是什么,但即使有人确保库“永远存在”,硬件故障可能会发生,公司被出售,流程改变等等。只要你信任别人而不是你自己,你就不能确定
  • 是的
  • 要真正解决这个问题,您可以使用或设置自己的存储库(另请参见)。如果您有自己的索引并正在运行,那么您可以在未来几年内完全控制依赖项库的安全。当然,它可能仍然会破裂:)

    如果你经营的是小企业,我认为改变你的流程和建立你自己的镜像(附加值是什么?)是没有好处的。<代码> Sv:Exuthals可能不是复杂的方法,但我个人也不会认为它是坏的。< /P>
    我还可以补充一点,Maven不仅仅是依赖关系管理。当你让Maven对你的项目有更多的控制时,协同效应会越来越大,所以如果你最终切换到Maven,那么也可以依赖它的其他功能(更容易更新库、自动下载源、结构约定、插件架构等)。

    +1下载的jar是否可能会成为合法的jar文件,但是版本是否正确(例如,由于镜像端的错误)?Maven将下载指定的版本,否则,这是一个bug。我猜镜像也可能将收到的包与错误的版本联系起来,但这又是一个bug——没有理由去考虑这些。