Git 有没有一种自动增加maven版本的好方法
我已经做了一段时间了,现在的情况是:Git 有没有一种自动增加maven版本的好方法,git,maven,continuous-integration,Git,Maven,Continuous Integration,我已经做了一段时间了,现在的情况是: 我有一个开发分支,每次推送之后,我都希望将当前的maven库发布为快照。目前,我通过使用exec插件和echo来检索我的maven版本(例如:--Dexec.executable=echo-Dexec.args='${project.version}'org.codehaus.mojo:exec maven插件:1.6.0:exec)) 然后,我使用updateversions命令将“-SNAPSHOT”注入到它并发布(我不会将它发布回分支,因为我真的不想
- 我有一个开发分支,每次推送之后,我都希望将当前的maven库发布为快照。目前,我通过使用exec插件和echo来检索我的maven版本(例如:--Dexec.executable=echo-Dexec.args='${project.version}'org.codehaus.mojo:exec maven插件:1.6.0:exec))
- 然后,我使用updateversions命令将“-SNAPSHOT”注入到它并发布(我不会将它发布回分支,因为我真的不想保留“-SNAPSHOT”)
- 是否能够正确地将某些内容发布为快照(可能不必求助于maven exec)
- 能够增量更新我的版本,这样用户就不必不断更新他们的版本了?当然,这个过程必须确保我不会将可能有错误版本的东西推给master(这将导致部署失败)。编辑:换言之,这里的意图不仅仅是将版本增加到“下一个”,而是增加到“下一个可用版本”,确保我不会尝试合并以前发布过的版本
- 在pom.xml中保持您的工件版本为
,并通过剥离 <代码> -快照和标记/部署它,当您想将其视为发布时。-SNAPSHOT
- 将您的工件版本保留为no
(我不建议这样做),并使用 动态设置版本-SNAPSHOT
<version>${revision}${sha1}${changelist}</version>
<properties>
<revision>1.0.0</revision>
<changelist></changelist>
<sha1/>
</properties>
能够以增量方式更新我的版本,因此用户不必
不断更新他们的版本?这个过程当然会
我必须确保我不会把可能有问题的东西推给大师
错误的版本(部署时会失败)
您可以依靠maven插件和脚本来实现这一点。例如,要自动增加没有快照作为前缀的版本的第二位数字,如在linux系统上,您可以执行以下操作:
// get the current pom version and store it into a variable
version=$(mvn -q -U -Dexpression=project.version -DforceStdout maven-help-plugin:evaluate)
// increment the second digit of the version and overwrite the variable
version=$(echo ${version} | awk -F'.' '{print $1"."$2+1"."$3}' | sed s/[.]$//)
// update the pom with the new version
mvn -U versions:set -DnewVersion=${version}
由于sed,它既适用于3位数字版本,也适用于2位数字版本。是对@davidxxx答案的补充。 使用build helper maven plugin可以改进这一点:
mvn build-helper:parse-version versions:set \
-DnewVersion=\${parsedVersion.nextMajorVersion}.0.0 \
versions:commit
或者像这样:
mvn build-helper:parse-version versions:set \
- DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0 \
versions:commit
没有任何sed等。更多详细信息:
我不知道解析版本的目标。那太棒了。我将在下一次尝试:)啊,这对我帮助很大。这可能确实帮助我实现了我们的预期,非常感谢。我看了一下,但对我的案例没有帮助,因为它实际上并不寻找最新的部署版本。在重新阅读我的问题时,这不是很清楚,我将更新这些信息。我在想也许更新版本可以用来做这件事,或者至少可以检索最新发布的版本。你在版本控制中创建标签了吗?如果是这样,您可以假设来自版本控制的最新版本与部署的最新版本相同(如果不是)。你必须找到另一种方法。这是一个非常好的评论,但大多数都不能
mvn build-helper:parse-version versions:set \
- DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.nextMinorVersion}.0 \
versions:commit
mvn versions:set -DnewVersion="$versionFromReliza"