Maven Release-plugin“标签已存在”,适用于不存在的标签

时间:2013-11-26 09:51:45

标签: git maven bamboo bitbucket-server svn2git

我的设置:git - Atlassian Stash - 服务器上的存储库和Atlassian Bamboo。 我正在Maven 3.1.1使用release-plugin 2.3.2Bamboo中的计划如下所示:

  1. git - 知识库
  2. 查看
  3. 执行clean install
  4. 使用release:preparerelease:perform
  5. 执行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
    

    git - 存储库是从svn2git - svn克隆的stash克隆的。我已多次尝试重新导入存储库,并在6.2.2 - 服务器上删除并重新克隆它。然而标签Maven似乎存在于6.2.2深处的某处。这是怎么回事?

    更新:我刚刚尝试从存储库中删除所有标记。结果相同。将版本从6.2.3更改为-2显示了积极的结果。

    另一个更新:它似乎与存储库的名称有关。创建一个具有相同名称但在最后添加{{1}}的新存储库有帮助。

5 个答案:

答案 0 :(得分:2)

在我最后一次发现之后不久就尖叫着" CACHE问题!"我找到了解决方案。我按照此站点上的说明删除了所有存储库缓存数据:https://confluence.atlassian.com/display/BAMKB/Git+cache+removal+in+Bamboo

答案 1 :(得分:2)

mvn release:clean之前的

release:prepare对我有用

答案 2 :(得分:0)

在源代码管理->其他行为中尝试“构建前清洁”和“构建后清洁”选项。

答案 3 :(得分:0)

在以前的发行失败之后,我在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工作区仍处于肮脏的存储库状态,该标记仍在其中。

答案 4 :(得分:-2)

对我有用的是mvn clean