将 maven-release-plugin 与 git-1.8.5 一起使用

Posted

技术标签:

【中文标题】将 maven-release-plugin 与 git-1.8.5 一起使用【英文标题】:Using maven-release-plugin with git-1.8.5 【发布时间】:2014-01-03 20:37:57 【问题描述】:

使用 git-1.8.5 时,使用 maven-release-plugin(使用 2.4.2 和 2.3.2 版本测试)和 mvn(使用 3.1.1 和 3.0.5 版本测试),运行 mvn release:prepare 和 @ 987654324@ 失败。

mvn release:prepare 未能创建它应该创建的提交:

[maven-release-plugin] 为下一次开发迭代做准备 [maven-release-plugin] 准备发布 foo-1.0.0

mvn release:prepare-with-pom 失败并出现 git 错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4.2:prepare-with-pom (default-cli) on project foo: Cannot remove release POMs from SCM
[ERROR] Provider message:
[ERROR] The git command failed.
[ERROR] Command output:
[ERROR] error: the following file has changes staged in the index:
[ERROR] release-pom.xml
[ERROR] (use --cached to keep the file, or -f to force removal)
[ERROR] -> [Help 1]
[ERROR] 

【问题讨论】:

看起来这是 ***.com/questions/17233718/… 和 ***.com/questions/13648894/… 的副本 【参考方案1】:

根据Mark Derricutt's solution,将 maven-scm-provider-gitexe:1.8.1 依赖显式添加到 maven-release-plugin:2.4.2 插件中:

<build>
   <plugins>
      <!-- ... -->
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-release-plugin</artifactId>
         <version>2.4.2</version>
         <dependencies>
            <dependency>
               <groupId>org.apache.maven.scm</groupId>
               <artifactId>maven-scm-provider-gitexe</artifactId>
               <!-- This version is necessary for use with git version 1.8.5 -->
               <version>1.8.1</version>
            </dependency>
         </dependencies>
      </plugin>
   </plugins>
</build>

背景:

git-1.8.5 对git status 的格式进行了重大更改,因此现在像maven-release-plugin 这样的脚本应该使用瓷器选项git status --porcelain 而不是git status。 因此,Robert Scholte could not include a dependency to maven-scm-provider-gitexe:1.8 with maven-release-plugin:2.4.2。 git 的 maven scm 提供程序合并了该修复程序以包含 --porcelain 标志和 maven-scm-provider-gitexe:1.8.1,但 maven-release-plugin:2.4.2 尚未更新其对 maven-scm-provider-gitexe 的依赖。请参阅https://jira.codehaus.org/browse/SCM-686 了解更多信息。 尽管依赖已过时,但我们可以通过显式添加依赖到 1.8.1 来覆盖它,如上所示。

【讨论】:

【参考方案2】:

这似乎已在 3 月 5 日发布的 maven-release-plugin 版本 2.5 中得到修复。

【讨论】:

谢谢乔伊,jira.codehaus.org/browse/MRELEASE-862 似乎修复了它。需要注意的另一件事是凯利戴维斯在jira.codehaus.org/browse/MRELEASE-767 中提到的 - 尚未确认,但这可能是多模块项目的问题(我相信解决方法是在每个子模块的 pom 中添加一个 scm 标签)就像在父 pom 中一样。) 好吧,我还没有看到 MRELEASE-767 中描述的关于我们在github.com/overturetool/overture 的(大量)多模块项目中描述的行为,所以我怀疑修复是可以的。

以上是关于将 maven-release-plugin 与 git-1.8.5 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

与 maven-release-plugin 一起使用的正确工作流程是啥?

使用 maven-release-plugin 部署程序集包

maven-release-plugin 先前版本的文档在哪里?我正在寻找版本 2.8.2

在 Git 中使用 maven-release-plugin

使用 maven-release-plugin 转换术语

maven-release-plugin 和表达式的问题