我们当前的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及其依赖项的各种冲突版本,我尝试过所有这些版本。 有没有人成功运行,你能帮帮我吗?
答案 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)
经过努力尝试提出可行的解决方法之后,我就是这样做的:
mvn release:prepare-with-pom -DdryRun = true
这将创建一个release-pom.xml文件,其中所有依赖项都已展平,并且所有<version>RELEASE</version>
标记都替换为实际版本。
我们打开了我们的pom.xml,并将依赖项部分替换为release-pom.xml中的那个,并将其检入源代码控制中。
我们现在每当我们的任何内部jar更新时手动更新pom文件,并且我们会在外部依赖项发生变化时重新运行上述过程。
我 正在处理Bamboo可以运行的bash脚本
由于我无法在Bamboo服务器上获得正确的开发/测试时间,而且我在本地运行我的脚本与在服务器上运行的结果不同,因此我们最终采用了更简单,更手动的解决方案。