为什么 release:prepare 将版本改回 SNAPSHOT?
Why does release:prepare change versions back to SNAPSHOT?
我正在使用 maven-release-plugin,我注意到它似乎在最后将已发布的版本更改回 -SNAPSHOT。
这是我传递给 maven 的命令行参数:
--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
我在日志文件中看到了一些警告 ^(不确定这是否相关,但似乎与发布插件有关)
终于看到插件又修改了POMs:
[INFO] Transforming 'myProject POM'...
[INFO] Updating my-project to 6.2-SNAPSHOT
在此之后,插件使用以下内容进行提交并推送:
[maven-release-plugin] rollback changes from release preparation of myProject-6.2
为什么会发生最后一点?
我不了解 release:prepare 或 release:perform 的生命周期。为什么我的所有代码似乎都构建了两次?
感谢任何帮助。谢谢
据我了解,release:prepare
- 将 POM 文件更新到指定的版本
- 执行构建,运行测试
- 执行其他验证(即不依赖于 SNAPSHOT 工件)
- 提交更改(应仅限于 POM 文件及其版本)
- 标记刚刚提交的源
- 将 pom 文件更新回指定的 SNAPSHOT 版本
- 提交这些更改
注意:我不确定这是不是特定顺序。上面的列表不是一个详尽的列表,只是我的回忆。
此时,版本不存在。这就是 release:perform 所做的。 Release:perform 根据 TAG 检查代码并根据标记的源构建工件。
这就是 release:prepare 将其移回快照版本的原因。它只是准备源代码以针对它构建一个版本。在该分支上工作的开发人员,一旦标记被剪切,就可以继续提交更改而不会影响 release:perform。它还允许在以后重新剪辑版本,因为它是根据标签构建的。
当然,这个插件有变体,已记录在案。但是,据我了解,这是一个常见的工作流程。
我正在使用 maven-release-plugin,我注意到它似乎在最后将已发布的版本更改回 -SNAPSHOT。
这是我传递给 maven 的命令行参数:
--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
我在日志文件中看到了一些警告 ^(不确定这是否相关,但似乎与发布插件有关)
终于看到插件又修改了POMs:
[INFO] Transforming 'myProject POM'...
[INFO] Updating my-project to 6.2-SNAPSHOT
在此之后,插件使用以下内容进行提交并推送:
[maven-release-plugin] rollback changes from release preparation of myProject-6.2
为什么会发生最后一点?
我不了解 release:prepare 或 release:perform 的生命周期。为什么我的所有代码似乎都构建了两次?
感谢任何帮助。谢谢
据我了解,release:prepare
- 将 POM 文件更新到指定的版本
- 执行构建,运行测试
- 执行其他验证(即不依赖于 SNAPSHOT 工件)
- 提交更改(应仅限于 POM 文件及其版本)
- 标记刚刚提交的源
- 将 pom 文件更新回指定的 SNAPSHOT 版本
- 提交这些更改
注意:我不确定这是不是特定顺序。上面的列表不是一个详尽的列表,只是我的回忆。
此时,版本不存在。这就是 release:perform 所做的。 Release:perform 根据 TAG 检查代码并根据标记的源构建工件。
这就是 release:prepare 将其移回快照版本的原因。它只是准备源代码以针对它构建一个版本。在该分支上工作的开发人员,一旦标记被剪切,就可以继续提交更改而不会影响 release:perform。它还允许在以后重新剪辑版本,因为它是根据标签构建的。
当然,这个插件有变体,已记录在案。但是,据我了解,这是一个常见的工作流程。