我正在一个Java项目上工作,当我运行命令cz bump
和cz changelog
更新.cz时,我正在使用commit来强制CI中的语义版本。使用新版本的Yaml和changelog文件,但不更新pom.xml中的版本。是否有一个功能来更新这个文件?
另外:应用程序目前正在由Maven构建
正如我在上面的评论中提到的,有一种方法可以解决这个问题,经过一些测试,我现在想为您提供一个简单的解决方案。
我假设你已经有了.cz.toml
文件,并且已经配置好了,并且使用maven作为Java项目的构建系统。
首先,您应该在maven根目录中添加一个scripts
文件夹。然后放两个shell脚本进去。第一个是prepare_java_version.sh
,内容是:
#!/bin/bash
mvn versions:set -DnewVersion=$CZ_PRE_NEW_VERSION
第二个文件是commit_java_version.sh
,在该文件中你放入内容:
#!/bin/bash
mvn versions:commit
现在你必须编辑.cz.toml
文件并添加这两个部分:
pre_bump_hooks = [
"scripts/prepare_java_version.sh"
]
post_bump_hooks = [
"scripts/commit_java_version.sh"
]
现在,你可以出发了。
解释:在创建标记之前,commit调用pre_bump_hooks
, shell脚本将pom.xml
修改为给定的版本。shell脚本中使用的Version是一个由commiten提供的环境变量。
在创建提交和标记之后,调用post_bump_hooks
,这个shell脚本再次清理maven repo。版本备份文件被删除,例如。
提示:如果出现问题,并且需要恢复pom.xml中的版本更改,只需调用mvn versions:revert
,就可以获得旧版本。但是这只在commit被调用之前起作用。