Maven Release插件针对不存在的标签出现“tag already exists”错误

14

我的设置:git 存储库位于 Atlassian Stash 服务器上,使用 Atlassian Bamboo

我正在使用 Maven 3.1.1release-plugin 2.3.2。在Bamboo中的计划如下:

  1. git 存储库签出
  2. 执行 clean install
  3. 执行 release:preparerelease:perform ,加上 ignoreSnapshots=trueresume=false

在最后一步之前的所有步骤都能成功运行,但是 Maven 声明无法标记发布,因为该标记已经存在。以下是日志:

build   26-Nov-2013 10:36:37    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.3.2:prepare (default-cli) on project [PROJECT-NAME]: Unable to tag SCM
build   26-Nov-2013 10:36:37    [ERROR] Provider message:
build   26-Nov-2013 10:36:37    [ERROR] The git-tag command failed.
build   26-Nov-2013 10:36:37    [ERROR] Command output:
build   26-Nov-2013 10:36:37    [ERROR] fatal: tag '[PROJECT-NAME]-6.2.2' already exists

嗯,显然该标签已经存在,没什么大不了的。然而,这是我存储库中git tag的样子:

bash:~/git/repositories/PROJECT-NAME$ git tag
[PROJECT-NAME]-5.2.5
[PROJECT-NAME]-5.3.0
[PROJECT-NAME]-5.3.1
[PROJECT-NAME]-5.4.0
[PROJECT-NAME]-5.5.0
[PROJECT-NAME]-5.5.1
[PROJECT-NAME]-5.5.2
[PROJECT-NAME]-5.5.3
[PROJECT-NAME]-5.5.4
[PROJECT-NAME]-5.6.0
[PROJECT-NAME]-5.6.1
[PROJECT-NAME]-5.6.2
[PROJECT-NAME]-5.6.3
[PROJECT-NAME]-5.6.4
[PROJECT-NAME]-5.6.5
[PROJECT-NAME]-5.6.6
[PROJECT-NAME]-6.0.0
[PROJECT-NAME]-6.0.1
[PROJECT-NAME]-6.0.2
[PROJECT-NAME]-6.1.0
[PROJECT-NAME]-6.1.1
[PROJECT-NAME]-6.1.2
[PROJECT-NAME]-6.2.0
[PROJECT-NAME]-6.2.1

通过svn2git从一个svn代码库克隆git代码库。我已经尝试过多次重新导入该代码库,删除并重新在stash服务器上克隆它。但是标签6.2.2似乎仍然存在于Maven的某个地方。这里发生了什么?

更新:我刚刚尝试删除代码库中的所有标签。结果相同。将版本从6.2.2更改为6.2.3则显示出积极的结果。

另一个更新:这似乎与代码库的名称有关。创建一个具有相同名称但末尾添加-2的新代码库可以解决问题。

5个回答

10

mvn release:clean 在执行 release:prepare 前可以帮助我解决问题。


我已经设置了Jenkins任务,并且在脚本中已经包含了构建jar的指令。虽然构建过程成功,但任务仍然失败且出现了错误。 - Albatross

5

在Jenkins发布构建后,如果之前的发布失败了,我会一遍又一遍地遇到这个错误。 我恢复了发布之前的存储库状态,并使用 git tag 验证该标记不再存在。为了确保绝对正确,我还使用以下命令从本地和远程删除了标记:

git tag --delete mytag
git push --delete origin mytag

两个命令都报告说标签不存在。尽管如此,发布版本构建仍然失败。

[ERROR] The git-tag command failed.
[ERROR] Command output:
[ERROR] fatal: tag 'mytag' already exists`.

我最终通过启用该选项来解决了这个问题。
Build Environment -> Delete workspace before build starts

因此,问题在于发布构建失败后,Jenkins工作区处于一个不干净的存储库状态,在其中标签仍然存在。

2

3
如果构建工具是Jenkins,你知道如何做吗? - bsky

1
尝试在源代码管理 -> 附加行为中使用“构建前清理”和“构建后清理”选项。

-1
我的解决方法是运行mvn clean

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接