为什么发布:准备更改版本回到SNAPSHOT?

时间:2015-01-04 21:31:34

标签: maven maven-release-plugin

我正在使用maven-release-plugin,我注意到它最终将发布的版本更改为-SNAPSHOT。

这是我传递给maven的命令行args:

--batch-mode release:prepare -DupdateWorkingCopyVersions=false -Darguments="-DskipTests -Djava.awt.headless=true -Dmaven.javadoc.failOnError=false"

一切似乎进展顺利 - 我注意到插件的提交和推送,其中所有正确的版本号确实更新为没有-SNAPSHOT。

[WARNING] Ignoring unrecognized line: ?? myProject/pom.xml.releaseBackup

我在日志文件中看到了一些警告^(不确定这是否相关,但似乎与发布插件有关)

最后我看到插件再次修改了POM:

[INFO] Transforming 'myProject POM'...
[INFO]   Updating my-project to 6.2-SNAPSHOT

在此之后,插件使用以下内容进行提交:

[maven-release-plugin] rollback changes from release preparation of myProject-6.2

为什么最后一点发生?

我不了解发布的生命周期:准备或发布:执行。为什么我的所有代码看起来都是两次构建的?

任何帮助表示赞赏。感谢

1 个答案:

答案 0 :(得分:2)

据我了解,发布:准备

  • 将POM文件更新为指定的版本
  • 执行运行测试的构建
  • 执行其他验证(即,不依赖于SNAPSHOT工件)
  • 提交更改(应限制为POM文件及其版本)
  • 标记刚刚提交的来源
  • 将pom文件更新回指定的SNAPSHOT版本
  • 提交这些更改

注意:我不确定这是否是特定订单。上面的列表并不是一个详尽的列表,只是我的回忆。

此时,该版本不存在。这就是发布:执行。发布:执行针对TAG的代码检查,并针对标记源构建工件。

这就是release:prepare将其移回快照版本的原因。它只是准备源代码来构建针对它的版本。切割标签后,在该分支上工作的开发人员可以继续提交更改,而不会影响发布:执行。它还允许在以后重新删除版本,因为它是根据标记构建的。

当然,这个插件有变化,有记录。但是,据我所知,这是一个常见的工作流程。