mvn clean install vs. deploy vs. release

Posted

技术标签:

【中文标题】mvn clean install vs. deploy vs. release【英文标题】: 【发布时间】:2011-04-09 07:31:19 【问题描述】:

我只是在学习maven,最近我们需要越来越多。我想知道

mvn clean install

mvn release

mvn deploy

请尽可能描述性。

【问题讨论】:

【参考方案1】: mvn install 会将您打包的 maven 项目放入 local 存储库,供本地应用程序使用您的项目作为依赖项。 mvn release 基本上会将您当前的代码放在 SCM 上的标签中,在您的项目中更改您的版本。 mvn deploy 会将您打包的 maven 项目放入 remote 存储库,以便与其他开发人员共享。

资源:

Maven install plugin Maven release plugin Maven deploy plugin

【讨论】:

如果我在每个命令上都加上 clean 会有什么影响?可以说, mvn clean install 然后执行另一个命令 mvn clean deploy?会一样吗?【参考方案2】:

cleaninstalldeploy 阶段 是有效的lifecycle phases,调用它们将触发它们之前的所有阶段,以及绑定到这些阶段的目标。

mvn 全新安装

此命令依次调用clean 阶段和install 阶段:

clean删除项目目录中构建时生成的文件(默认为targetinstall将包安装到本地存储库中,用作本地其他项目的依赖项

mvn 部署

此命令调用deploy 阶段:

deploy将最终包复制到远程存储库,以便与其他开发人员和项目共享

mvn 发布

这不是一个有效的阶段,也不是一个目标,所以这不会做任何事情。但如果指的是用于自动化发布管理的Maven Release Plugin。发布项目分两步完成:prepareperform。据记载:

准备发布需要经过 以下发布阶段:

检查源中没有未提交的更改 检查是否没有 SNAPSHOT 依赖项 将 POM 中的版本从 x-SNAPSHOT 更改为新版本(您 将提示您输入的版本 使用) 转换 POM 中的 SCM 信息以包含最终 标签的目的地 针对修改后的 POM 运行项目测试,以确认一切正常 工作正常 提交修改后的 POM 在单片机代码中打上版本名称(会提示 为) 将 POM 中的版本添加到新值 y-SNAPSHOT(这些值 也会被提示) 提交修改后的 POM

然后:

执行发布会运行 以下发布阶段:

从带有可选标签的 SCM URL 结帐 运行预定义的 Maven 目标以发布项目(默认情况下, 部署站点部署)

另见

Introduction to the Build Lifecycle The Maven Release Plugin

【讨论】:

你能否澄清一下:这不是一个有效的阶段,也不是一个目标,所以这不会做任何事情。但是if指的是Maven Release Plugin。如果它既不是阶段也不是目标,那我们怎么称呼它呢?

以上是关于mvn clean install vs. deploy vs. release的主要内容,如果未能解决你的问题,请参考以下文章

mvn install 包含 mvn clean吗

“mvn clean install”和“mvn clean verify install”有啥区别?

“mvn clean install”与“mvn install”有何不同?

mvn clean package install deploy

如何在eclipse中使用mvn clean install

Run “mvn clean install” in Eclipse