如何正确使用 mvn release:prepare?

Posted

技术标签:

【中文标题】如何正确使用 mvn release:prepare?【英文标题】:How to use properly mvn release:prepare? 【发布时间】:2017-04-18 12:59:42 【问题描述】:

我在我的 Maven 项目上尝试这个命令(使用dryrun 进行测试):

mvn release:clean release:prepare -DdryRun=true -DgenerateBackupPoms=false -Dtag=solocal-refentreprive-2.1-RC02 -DreleaseVersion=2.1-RC02 -DdevelopmentVersion=2.1-SNAPSHOT

最后,构建成功,但我(在我的提交中)有很多 pom.next / pom.tagpom.backUp...

如果我不使用 dryrun,我不会在那时 (-DgenerateBackupPoms=false)。我不想推这个 pom...

【问题讨论】:

什么版本的Maven?什么版本的maven发布插件? 有几个标签看起来不合适;例如这和 git 有什么关系? 【参考方案1】:

假设您接受默认版本:prepare 执行以下操作

1) 构建并检查所有测试是否通过

2) 检查没有 SNAPSHOT 依赖项

3) 将版本从 x.x-SNAPSHOT 更改为 x.x

4) 推送到 SCM 中的标签

5) 将下一次迭代的版本更改为 x.(x+1)-SNAPSHOT

所以你的 pom.backUp 是原始的 pom,你的 pom.tag 来自第 3 步,你的 pom.next 来自第 5 步。

您可以使用 mvn release:clean 进行清理,这将在发布后自动完成:执行参见 maven-release

【讨论】:

推送标签意味着推送到 git 或只是创建需要显式推送的本地标签? @SharadHolani 表示将标签推送到远程 SCM 我运行 maven 发布插件。但我没有看到任何新标签被推送到我的远程 git。我可以看到它已按照步骤 3 和 5 中的说明进行了 2 次本地提交。此外,当我运行 git describe --tags 时,我可以看到在本地创建的标签。我不需要运行 git push 来将步骤 4 中创建的标签推送到远程 git 吗?【参考方案2】:

也许已经晚了,但根据您的问题,您还没有在mvn release:prepare 命令之后运行mvn release:perform

不要忘记使用 perform 命令完成发布过程。 https://maven.apache.org/maven-release/maven-release-plugin/plugin-info.html

或者如果你不想使用perform,使用应该再次使用mvn release:clean

【讨论】:

以上是关于如何正确使用 mvn release:prepare?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 mvn -f 打包 pom.xml 在文件夹树中存在两个文件夹?

Mvn clean package 未正确创建 JAR 文件

运行“mvn clean javadoc:jar package”时出现错误“未正确定义 JAVA_HOME 环境变量”

Java的Maven工具,如何使用mvn卸载包?

如何使用 IntelliJ IDEA 执行 mvn 命令?

mvn dependency:copy-dependencies下载本地仓库jar报错找不到