“mvn deploy”到本地仓库和“mvn install”有什么区别?
我的团队使用从Apache开发服务器共享的内部团队maven repo。 我们也在同一台机器上运行Continuum CI服务器。 “Continuum”中的Maven构build与“安装”目标一起运行,它将最终的工件直接复制到共享目录中。
问题是,使用mvn install和使用部署目标(mvn-deploy插件)将文件添加到共享库中有什么区别?
在我看来,使用mvn部署创build额外的configuration麻烦,但我已经读过的地方,将文件安装到共享的回购是一个坏主意,由于某些原因与内部运作的maven。
更新:我得到部署和安装之间的function差异; 实际上,我更感兴趣的是在maven回购中创build的文件的底层细节。
肯,好问题。 我应该在“权威指南”中更加明确的区别。 “安装”和“部署”在构build中有两个不同的用途。 “安装”是指在本地存储库中安装工件的过程。 “部署”是指将工件部署到远程存储库的过程。
例:
-
当我在我的机器上运行一个大的多模块项目时,我通常会运行“mvn install”。 这将在我的本地存储库中安装所有生成的二进制软件工件(通常是JAR)。 然后,当我在构build中构build单独的模块时,Maven将从本地存储库中检索依赖项。
-
当需要部署快照或发布时,我将运行“mvn deploy”。 运行这将试图将文件部署到远程存储库或服务器。 通常,我将要部署到像Nexus这样的资源库pipe理器
确实,运行“部署”将需要一些额外的configuration,您将不得不在POM中提供一个distributionManagement部分。
从Maven文档中 ,听起来像只是将软件包安装到哪个存储库中的区别:
- 安装 – 将软件包安装到本地存储库中,作为本地其他项目的依赖项
- 部署 – 在集成或发行版环境中完成,将最终包复制到远程存储库,以便与其他开发人员和项目共享。
也许有一些困惑,在“安装”CI服务器安装到它的本地存储库,然后你作为一个用户共享?
“matt b”是正确的,但具体而言,“安装”目标将您构build的目标复制到文件系统上的本地存储库; 对于目前不适合整个团队的项目的小改动很有用。
“部署”目标将其上传到您的共享存储库,以便在您的工作完成时,然后由其他需要其项目的人员共享。
在你的情况下,由于CI的本地回购是共享的回购,所以似乎使用“安装”来使得部署的pipe理更容易。 如果CI在另一个盒子上,则必须使用“部署”目标。