【问题标题】:Maven release:prepare-with-pom removes release-pom then tries to add it?Maven release:prepare-with-pom 删除 release-pom 然后尝试添加它?
【发布时间】:2015-08-24 18:02:21
【问题描述】:

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

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

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

快速浏览最近运行的命令显示:

[INFO] Executing: /bin/sh -c cd /Users/mikeburke/experience-manager/exm-v2 && git rm release-pom.xml
[INFO] Working directory: /Users/mikeburke/experience-manager/exm-v2
[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /Users/mikeburke/experience-manager/exm-v2 && git add -- pom.xml release-pom.xml

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

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

【问题讨论】:

  • 这里有同样的问题。您找到解决方法了吗?
  • @Antoine 最后我没有。但是我进行了研究,这可能会帮助您找到解决方法。我会添加它作为答案。

标签: git maven maven-release-plugin


【解决方案1】:

这个bug记录在这里:https://issues.apache.org/jira/browse/SCM-706

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

【讨论】:

  • Bug 直到现在仍然存在。
【解决方案2】:

经过相当多的努力试图提出一个可行的解决方法,这就是我所做的:

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

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

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

正在编写 Bamboo 可以运行的 bash 脚本

  1. 试运行
  2. 将 pom.xml 重命名为 pom.dev,将 release-pom.xml 重命名为 pom.xml
  3. 运行并标记发布版本
  4. 删除 pom.xml 并将 pom.dev 重命名为 pom.xml
  5. 更新快照版本号并重新签入。

由于我永远无法在 Bamboo 服务器上获得适当的开发/测试时间,而且我在本地和在服务器上运行我的脚本得到了不同的结果,因此我们最终选择了更简单、更手动的解决方案。

【讨论】:

  • 感谢您抽出宝贵时间撰写此答案。我试试看
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
  • 2011-03-13
  • 2010-12-31
  • 2017-07-21
  • 2010-11-09
  • 1970-01-01
相关资源
最近更新 更多