代码之家  ›  专栏  ›  技术社区  ›  Ken Liu

“mvn部署”到本地repo和“mvn安装”之间有什么区别?

  •  84
  • Ken Liu  · 技术社区  · 16 年前

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

    mvn install 以及使用部署目标(mvn部署插件)?

    在我看来,使用 mvn deploy 这会增加配置方面的麻烦,但我在某个地方读到,由于与maven内部工作相关的某些原因,将文件安装到共享repo中是一个坏主意。

    更新:我得到了它们之间的功能差异 deploy install ; 实际上,我对maven repo中创建的文件的底层细节更感兴趣。

    3 回复  |  直到 4 年前
        1
  •  177
  •   Tim O'Brien    14 年前

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

    例子:

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

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

        2
  •  19
  •   matt b    16 年前

    From the Maven docs ,听起来只是不同的地方 哪一个 将包安装到的存储库:

    • 部署—在集成或发布环境中完成,将最终包复制到远程存储库,以便与其他开发人员和项目共享。

    “安装”到CI服务器将其安装到其本地存储库中,然后您作为用户共享该存储库,这可能会引起一些混淆?

        3
  •  5
  •   Spencer Kormos    16 年前

    “mattb”是正确的,但具体来说,“安装”目标会将构建的目标复制到文件系统上的本地存储库中;对于当前不适用于整个组的项目中的小更改非常有用。

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

    在您的案例中,似乎使用了“安装”来简化部署的管理,因为CI的本地repo 共享回购协议。如果CI位于另一个框中,则必须使用“部署”目标。