Azure Devops-Mvn更新版本不能作为CI构建的一部分

时间:2019-10-14 10:22:44

标签: azure-devops maven-3

我们正在Git master分支上开发用于CI管道的Azure Devops。我们的pom.xml文件中包含Version,一旦构建成功,就需要对其进行更新并将其推送回Git。

例如: <version>0.0.8-SNAPSHOT</version>在pom.xml中

当我们跑步时
mvn --batch-mode release:prepare release:update-versions -DreleaseVersion=0.0.9 -DpushChanges=true。它应该自动将更新的版本推送到Git master分支中的pom.xml

当从本地终端运行上述命令时,上述命令可以完美运行,但在运行Azure devops并出现以下错误时,该命令将失败

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5.2:prepare (default-cli) on project ap-fds-bua-ccc-api: An error is occurred in the checkin process: Exception while executing SCM command. Detecting the current branch failed: fatal: ref HEAD is not a symbolic ref -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
The process '/usr/share/maven/bin/mvn' failed with exit code 1

1 个答案:

答案 0 :(得分:0)

  

Azure Devops-Mvn更新版本无法作为CI构建的一部分

根据文档MojoExecutionException,此异常不是由Maven核心本身生成的,而是由插件生成的。

对于您而言,您似乎正在使用maven-release-plugin:2.5.2。问题的原因似乎是该插件以分离的头部状态签出了分支。 HEAD是一个指针,它告诉您所在的分支。管道会在运行时签出特定的修订/提交以帮助测试项目的每个更改,从而使工作副本处于“分离头”模式。 Maven希望对您的存储库进行其他提交以记录对pom.xml所做的更改,因此必须在分支上。

因此,要解决此问题,您可以尝试将要从其释放的分支重置为当前提交。假设您是在master上工作,则可以在管道的开头添加命令行任务:

git checkout master

然后,您将处于领先地位:管理员,并且能够运行maven release。

您可以检查this threadthis thread了解更多详细信息。

希望这会有所帮助。