Maven 发布流程阶段

Posted

技术标签:

【中文标题】Maven 发布流程阶段【英文标题】:Maven release process phases 【发布时间】:2016-12-24 22:04:46 【问题描述】:

我对 maven 的发布过程有点困惑。当我搜索它时,我发现它是一个两步过程:

    准备

    执行

    准备发布经历了以下发布阶段:

a)检查源中没有未提交的更改

b)检查是否没有 SNAPSHOT 依赖项

c)将 POM 中的版本从 x-SNAPSHOT 更改为新版本(系统将提示您选择要使用的版本)

d) 将 POM 中的 SCM 信息转换为包含标签的最终目的地

e)针对修改后的 POM 运行项目测试,以确认一切正常

f) 提交修改后的 POM

g)用版本名称标记 SCM 中的代码(将提示输入)(版本名称)

h)将 POM 中的版本添加到新值 y-SNAPSHOT(也会提示输入这些值)

i) 提交修改后的 POM

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

a) 从带有可选标签的 SCM URL 结帐

b) 运行预定义的 Maven 目标以发布项目(默认部署 site-deploy)

让我感到困惑的是,当我们在 中检查相同的 POM(我们在准备阶段提交的)时,为什么我们要在 preparation 阶段提交 POM 执行阶段?

当我们已经有了 POM 时,为什么要提交然后再次检查它?

任何帮助将不胜感激。

提前致谢。

【问题讨论】:

解决了吗?如果是这样,请考虑upvoting/accepting 的答案。 【参考方案1】:

当步骤 i) 完成后,您在 POM 中再次拥有 xxx-SNAPSHOT 版本号。那是您将要开发的新版本。因此,您不能基于该 POM 进行发布。需要根据您在步骤 g) 中创建的标签创建版本。

此外,Maven 确保您不会在发布过程中修改工件(从而创建未提交的更改)。这就是为什么它会在执行阶段检查整个源代码树,而不是依赖于文件系统本地已有的工件。

【讨论】:

以上是关于Maven 发布流程阶段的主要内容,如果未能解决你的问题,请参考以下文章

Maven 发布流程 - 最佳实践

Maven 默认生命周期和插件部分

Maven 安装生命周期阶段不调用资源阶段

什么是 Maven 目标和阶段,它们有什么区别?

用于 Maven 部署的 Gitlab CI/CD 的适当阶段是啥?

Maven命令列出生命周期阶段以及绑定目标?