Maven发布:prepare-with-pom删除release-pom然后尝试添加它?

时间:2015-06-09 18:38:47

标签: git maven maven-release-plugin

我们当前的pom文件对许多依赖项使用关键字RELEASE,我们需要保留一个包含发布版本对应的实际版本的工件pom。 Prepare-with-pom就是这样做的,如果我用-DdryRun运行maven,我会得到一个看起来完全正确的release-pom.xml。

然而,对于真正的交易,我需要删除干运行并添加执行命令。在这一点上,maven做了一些奇怪的事情。每次都会失败并显示以下消息:

map-merge

快速查看最近的命令运行显示:

The git-add command failed.
Command output:
fatal: pathspec 'release-pom.xml' did not match any files

当然不存在release-pom.xml,你刚删除它。

所以,为什么会发生这种情况,更重要的是,我该如何解决? 我已经浏览了所有论坛及其他内容,而我发现的最接近我的问题的是this,它建议使用maven及其依赖项的各种冲突版本,我尝试过所有这些版本。 有没有人成功运行,你能帮帮我吗?

2 个答案:

答案 0 :(得分:3)

此错误记录在此处:https://issues.apache.org/jira/browse/SCM-706

在org.apache.maven.scm:maven-scm-provider-gitexe:1.9.4之后补丁是merged,因此您必须从源安装快照或等到1.9.5被释放。

答案 1 :(得分:1)

经过努力尝试提出可行的解决方法之后,我就是这样做的:

  1. mvn release:prepare-with-pom -DdryRun = true 这将创建一个release-pom.xml文件,其中所有依赖项都已展平,并且所有<version>RELEASE</version>标记都替换为实际版本。

  2. 我们打开了我们的pom.xml,并将依赖项部分替换为release-pom.xml中的那个,并将其检入源代码控制中。

  3. 我们现在每当我们的任何内部jar更新时手动更新pom文件,并且我们会在外部依赖项发生变化时重新运行上述过程。

  4. 正在处理Bamboo可以运行的bash脚本

    1. 干涸
    2. 将pom.xml重命名为pom.dev,将release-pom.xml重命名为pom.xml
    3. 运行并标记发布版本
    4. 删除pom.xml并将pom.dev重命名为pom.xml
    5. 更新快照版本号并重新检查。
    6. 由于我无法在Bamboo服务器上获得正确的开发/测试时间,而且我在本地运行我的脚本与在服务器上运行的结果不同,因此我们最终采用了更简单,更手动的解决方案。