Maven Release-plugin “tag already exists” for nonexistant tag

a 夏天 提交于 2019-12-23 07:50:28

问题


My setup: git-repository on an Atlassian Stash-server and Atlassian Bamboo. I'm using Maven 3.1.1 with the release-plugin 2.3.2. The plan in Bamboo looks like this:

  1. Check out from git-repository
  2. perform a clean install
  3. perform release:prepare and release:perform with ignoreSnapshots=true and resume=false

Everything up to the last step works fine, but Maven states, that it can't tag the release, because the tag already exists. Here is the log:

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

Well, obviously the tag already exists, no big deal. However, this is what git tag looks like for my repository:

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

The git-repository is cloned via svn2git from an svn-repository. I've tried multiple times reimporting the repository and deleting and re-cloning it on the stash-server. Yet the tag 6.2.2 seems to exist somewhere in the depths for Maven. What's going on here?

Update: I just tried removing ALL tags from the repository. Same result. Changing the version from 6.2.2 to 6.2.3 showed positive results.

Another update: It seems to have something to do with the name of the repository. Creating a new repository with the same name but adding -2 at the end helped.


回答1:


Shortly after my last discovery which screamed "CACHE PROBLEM!" I found the solution. I deleted all repository-cache-data following the instructions on this site: https://confluence.atlassian.com/display/BAMKB/Git+cache+removal+in+Bamboo




回答2:


mvn release:clean before release:prepare is what worked for me




回答3:


Try options "Clean before Build" and "Clean After Build" within Source Code Management -> Additional Behaviors.




回答4:


I experienced this error again and again in a Jenkins release build after a release had failed previously. I restored the repository state before the release and verified that the tag did not exist anymore using git tag. To be absolutely sure, I also deleted the tag locally and remotely using:

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

Both commands reported that the tag did not exist. Regardless, the release build kept failing with

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

I finally solved this by enabling the option

Build Environment -> Delete workspace before build starts

Hence the problem is that after a failed release build the Jenkins workspace is left with a dirty repository state in which the tag still exists.




回答5:


What worked for me was running mvn clean .



来源:https://stackoverflow.com/questions/20213557/maven-release-plugin-tag-already-exists-for-nonexistant-tag

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!