首页 文章

“mvn deploy”与本地仓库和“mvn install”有什么区别?

提问于
浏览
85

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

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

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

更新:我得到了部署和安装之间的功能差异;我实际上对maven repo中创建的文件的低级细节更感兴趣 .

3 回答

  • 152

    肯,好问题 . 关于差异,我应该在The Definitive Guide中更加明确 . "install"和"deploy"在构建中提供两种不同的用途 . "install"指的是在本地存储库中安装工件的过程 . "deploy"指的是将工件部署到远程存储库的过程 .

    例:

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

    • 在部署快照或版本时,我将'm going to run 2734355 . Running this is going to attempt to deploy the files to a remote repository or server. Usually I' m将部署到存储库管理器,例如Nexus

    确实,运行“部署”需要一些额外的配置,您将不得不在POM中提供distributionManagement部分 .

  • 15

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

    • install - 将软件包安装到本地存储库中,以便在本地用作其他项目的依赖项

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

    也许有一些混乱,CI服务器的“安装”将它安装到它的本地存储库,然后你作为用户共享?

  • 3

    “matt b”是正确的,但具体而言,“安装”目标会将您构建的目标复制到文件系统上的本地存储库中;对于目前不适用于整个组的项目的小变化非常有用 .

    “部署”目标会将其上传到您的共享存储库,以便您的工作完成,然后可以由需要其项目的其他人共享 .

    在您的情况下,似乎"install"用于更轻松地管理部署,因为CI的本地存储是共享存储库 . 如果CI在另一个框中,则必须使用"deploy"目标 .

相关问题