问题
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:
- Check out from
git
-repository - perform a
clean install
- perform
release:prepare
andrelease:perform
withignoreSnapshots=true
andresume=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