如何正确使用 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.tag
和 pom.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 环境变量”