【问题标题】:When to run my own maven repository?何时运行我自己的 Maven 存储库?
【发布时间】:2011-08-10 20:18:05
【问题描述】:

我正在与另一位开发人员一起开发一个小项目。我们正在使用公共 maven 存储库中所有可用的库。我们有一个单一的、多模块的 Maven 项目,但每次都在我们的构建服务器和开发人员机器中构建所有模块。构建的工件可在构建服务器上进行部署。

我们有什么理由设置一个 Maven 存储库管理器吗?它将在构建机器上运行,我必须通过 VPN 连接到它,并且比直接从 Internet 下载要慢。

【问题讨论】:

  • 如果你决定拥有自己的,我推荐 Artifactory。 jfrog.com/products.php 在 Windows 或 Linux 中设置非常容易。您也可以轻松配置镜像和备份。
  • 我用过archiva和nexus,但从来没有用过Artifactory。我去看看。谢谢指点。
  • 想知道为什么对此投票接近?
  • 这里不推荐神器。它比 nexus 慢得多,重量也大得多。

标签: java maven-2 maven


【解决方案1】:

运行 repo manager 的最佳理由是在面对 maven 对 声明的处理时实现可靠的行为。

如果您引用的任何依赖项,或您使用的插件,或您使用的插件的依赖项声明了任何存储库,maven 将开始在这些存储库中搜索 everything。而且,如果它们不可靠或速度慢,那么您的构建就完成了。虽然目前的政策是禁止在中心声明存储库,但有很多历史 pom 指向各个方向。

解决此问题的唯一方法是设置存储库管理器并在 settings.xml 中将其声明为“mirrorOf”“*”。然后,将必要的规则放入您的存储库管理器中,以仅搜索您想要搜索的地方。

当然,如果你们不止一个人并且您想共享快照或发布,那么您也确实需要一个存储库管理器。这是显而易见的原因。

如果我关闭我的 repo 管理器并尝试构建我的一些项目,这些项目运气不好,在他们的 pom 中包含带有存储库声明的插件/依赖项,它们会失败。有了回购经理,一切都很好。

【讨论】:

    【解决方案2】:

    如果你不得不问,可能不会。
    但这是一个非常便宜的日期 - Nexus 的设置非常简单,我不知道档案。

    公共服务器往往不可靠。 本地镜像会更快。 你不想挂断电话,因为你清理了本地存储库并且无法从公共存储库中获取任何东西。

    如果您需要使用多个版本的应用程序,我会开始更加努力地考虑它。

    【讨论】:

    • 好吧,我的应用程序的多个版本是有意义的,但即便如此,因为我在 svn 中标记每个版本,如果需要,我可以轻松地重建应用程序。就我而言,由于构建服务器位于我的好友地下室的 mac mini 上,因此从本地镜像获取我的工件实际上会更慢,但是由于某种原因不再提供关键依赖项的情况是相当不错的吓人。
    【解决方案3】:

    在我看来,只有当项目和从事它们的团队越来越多时,它才成为一个很好的理由,特别是因为它的“版本控制”功能。

    【讨论】:

      【解决方案4】:

      我的回答是,只要你需要一个 jar,你就必须创建一个自己的存储库,它不在公共存储库中(不是那么难,因为例如一些 JDBC 驱动程序没有托管在公共存储库中许可问题)。如果您不这样做,您将失去 Maven 的主要优势,即您的同事无需执行任何操作即可获得正确的库。如果你引入一个新的库,如果你有公司仓库,你不需要和同事说什么,但如果没有,你需要为他们发送库,你需要告诉他们如何在本地安装库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-05
        • 2010-11-19
        • 1970-01-01
        • 2017-03-09
        • 1970-01-01
        • 1970-01-01
        • 2021-10-02
        • 1970-01-01
        相关资源
        最近更新 更多