我的团队使用内部团队maven repo,它使用Apache从开发服务器共享。我们还在同一台机器上运行Continuum CI服务器。 Continuum中的Maven构建以“安装”目标运行,该目标将最终工件直接复制到共享目录中。
问题是,使用mvn install和使用部署目标(mvn-deploy plugin)将文件添加到共享仓库有什么区别?
在我看来,使用mvn deploy会产生额外的配置麻烦,但我已经在某处读过,将文件安装到共享仓库中是出于某种原因,这与某些与maven的内部工作方式相关的原因是个坏主意。
更新:我得到了部署和安装之间的功能差异;实际上,我对maven repo中创建的文件的低级细节更感兴趣。
答案 0 :(得分:152)
示例:
当我在我的机器上运行一个大的多模块项目时,我通常会运行“mvn install”。这将在我的本地存储库中安装所有生成的二进制软件工件(通常是JAR)。然后,当我在构建中构建单个模块时,Maven将从本地存储库中检索依赖项。
在部署快照或版本时,我将运行“mvn deploy”。运行此操作将尝试将文件部署到远程存储库或服务器。通常我将部署到存储库管理器,例如Nexus
运行“部署”确实需要一些额外的配置,您将不得不在POM中提供distributionManagement部分。
答案 1 :(得分:15)
From the Maven docs,听起来只是将哪个存储库安装到软件包中的区别:
对于CI服务器的“安装”,可能会将它安装到它的本地存储库,然后您作为用户共享,这可能存在一些混淆?
答案 2 :(得分:3)
“matt b”是正确的,但具体而言,“安装”目标会将您构建的目标复制到文件系统上的本地存储库中;对于目前不适用于整个组的项目的小变化非常有用。
“部署”目标会将其上传到您的共享存储库,以便您的工作完成,然后可以由需要其项目的其他人共享。
在您的情况下,似乎“安装”用于使部署的管理更容易,因为CI的本地存储是共享存储库。如果CI在另一个盒子上,则必须使用“部署”目标。