【问题标题】:What is the difference between "mvn deploy" to a local repo and "mvn install"?“mvn deploy”到本地仓库和“mvn install”有什么区别?
【发布时间】:2010-09-17 11:05:41
【问题描述】:

我的团队使用从使用 Apache 的开发服务器共享的内部团队 maven 存储库。我们还在同一台机器上运行 Continuum CI 服务器。 Continuum 中的 Maven 构建以“安装”目标运行,它将最终工件直接复制到共享目录中。

问题是,使用mvn install 将文件添加到共享存储库和使用部署目标(mvn-deploy 插件)有什么区别?

在我看来,使用 mvn deploy 会带来额外的配置麻烦,但我在某处读到由于与 maven 的内部工作相关的某些原因,将文件安装到共享存储库中是一个坏主意。

更新:我得到了deployinstall 之间的功能差异;实际上,我对在 maven 存储库中创建的文件方面的低级细节更感兴趣。

【问题讨论】:

    标签: maven-2


    【解决方案1】:

    肯,好问题。我应该在The Definitive Guide 中更明确地说明差异。 “安装”和“部署”在构建中有两个不同的目的。 “安装”是指在本地存储库中安装工件的过程。 “部署”是指将工件部署到远程存储库的过程。

    例子:

    1. 当我在我的机器上运行一个大型的多模块项目时,我通常会运行“mvn install”。这将在我的本地存储库中安装所有生成的二进制软件工件(通常是 JAR)。然后,当我在构建中构建单个模块时,Maven 将从本地存储库中检索依赖项。

    2. 当需要部署快照或版本时,我将运行“mvn deploy”。运行它会尝试将文件部署到远程存储库或服务器。通常我会部署到存储库管理器,例如Nexus

    确实,运行“deploy”需要一些额外的配置,你必须在你的 POM 中提供一个 distributionManagement 部分。

    【讨论】:

    • @Tim 那么mvn deploy 的优势到底是什么?对于最初需要的额外配置,它有什么好处?
    • Deploy 旨在将工件部署到远程服务器。这是与安装完全不同的用例。
    【解决方案2】:

    From the Maven docs,听起来只是您将软件包安装到哪个存储库中的差异:

    • install - 将包安装到本地存储库中,用作本地其他项目的依赖项
    • 部署 - 在集成或发布环境中完成,将最终包复制到远程存储库,以便与其他开发人员和项目共享。

    也许存在一些混淆,即“安装”到 CI 服务器将其安装到本地存储库,然后您作为用户正在共享?

    【讨论】:

      【解决方案3】:

      "matt b" 是对的,但具体来说,"install" 目标将您构建的目标复制到文件系统上的本地存储库;对于目前不适合整个团队的项目间的小改动很有用。

      “部署”目标会在您的工作完成时将其上传到您的共享存储库,然后可供项目需要它的其他人共享。

      在您的情况下,似乎“安装”用于简化部署管理,因为 CI 的本地存储库共享存储库。如果 CI 在另一个盒子上,它必须使用“部署”目标。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-08
        • 2014-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-20
        • 2012-07-25
        • 2011-07-09
        相关资源
        最近更新 更多