【问题标题】:mvn release:prepare not committing changes to pom.xmlmvn release:prepare 不提交对 pom.xml 的更改
【发布时间】:2013-02-16 11:43:11
【问题描述】:

我正在尝试使用 Maven 发布 Jenkins 插件 (stashNotifier) 并遇到发布插件的问题。

mvn clean release:prepare

运行完成且没有错误,但未能在我的本地 git 存储库中提交更改的 pom.xml。即使它确实标记了我尝试发布版本 1.0.2 的分支的 HEAD。这是我的本地分支在准备发布之前的样子

* df60768 (HEAD, origin/develop, develop) upgraded parent pom to version 1.498
* 792766a added distribution management section to pom.xml and amended readme.md 

这就是它之后的样子

* df60768 (HEAD, tag: stashNotifier-1.0.2, origin/develop, develop) upgraded parent pom to version 1.498
* 792766a added distribution management section to pom.xml and amended readme.md 

不幸的是,pom.xml 已经包含下一个开发版本,这反过来又会导致后续 release:perform 发布该快照版本。

从 maven 的命令输出来看,它几乎看起来像是省略了 git commit 命令:

[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git add -- pom.xml
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git status
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Tagging release with the label stashNotifier-1.0.2...
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git tag -F /var/folders/dr/xxbtyycs1z9dl2_snlj87zrh0000gn/T/maven-scm-678409272.commit stashNotifier-1.0.2
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git push git@github.com:jenkinsci/stashnotifier-plugin.git stashNotifier-1.0.2
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git ls-files
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Transforming 'Stash Notifier'...
[INFO] Not removing release POMs
[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git add -- pom.xml
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git status
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Release preparation complete.

我正在运行 maven 3.0.5(没有 --dry-run 或 -DpushChanges=false)。以下是我的有效 pom 的相关(我认为)部分:

[...]

<scm>
   <connection>scm:git:git://github.com/jenkinsci/stashnotifier-plugin.git</connection>
   <developerConnection>scm:git:git@github.com:jenkinsci/stashnotifier-plugin.git</developerConnection>
   <url>https://github.com/jenkinsci/stashnotifier-plugin</url>
</scm>

[...]

<distributionManagement>
   <repository>
      <id>maven.jenkins-ci.org</id>
      <url>http://maven.jenkins-ci.org:8081/content/repositories/releases/</url>
   </repository>
   <snapshotRepository>
      <id>maven.jenkins-ci.org</id>
      <url>http://maven.jenkins-ci.org:8081/content/repositories/snapshots</url>
   </snapshotRepository>
   <site>
     <id>github-pages</id>
     <url>gitsite:git@github.com/jenkinsci/maven-site.git:plugin-parent/stashNotifier</url>
   </site>
</distributionManagement>

[...]

<properties>
   [...]
   <maven-release-plugin.version>2.2.2</maven-release-plugin.version>
   [...]
</properties>

[...]

<build>
   [...]
   <pluginManagement>
      <plugins>
         [...]
         <plugin>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.2.2</version>
         </plugin>
         [...]
   </pluginManagement>

   [...]

   <plugins>
      [...]
      <plugin>
         <artifactId>maven-release-plugin</artifactId>
         <version>2.2.2</version>
         <configuration>
            <goals>deploy</goals>
         </configuration>
      </plugin>
      [...]
   </plugins>
</build>

我做错了什么?提前感谢您的见解!

【问题讨论】:

  • 不幸的是,我没有看到任何与您的描述相关的错误消息。你能显示你收到的错误信息吗?
  • 就是这样;根本没有错误消息。您对输出的特定部分感兴趣吗? (我想通过附加多页 Maven 命令行输出来避免使问题变得臃肿)
  • 我刚刚遇到了完全相同的问题,并通过更新到 maven-release-plugin 的 2.4 版解决了它。
  • 我也遇到了同样的问题,只是我从 2.4 降级到 2.3.2 解决了这个问题。去图吧。
  • 我也遇到了这个问题,但是从 2.4.1 升级到 2.5.1 为我解决了这个问题。

标签: maven plugins jenkins release


【解决方案1】:

我通过更新 git scm 提供程序依赖项而不是发布插件版本解决了我这边的问题(运行 maven 3.0.5):

<build>
  <plugins>
    <plugin>
      <artifactId>maven-release-plugin</artifactId>
      <version>2.4.2</version>
      <dependencies>
        <dependency>
          <groupId>org.apache.maven.scm</groupId>
          <artifactId>maven-scm-provider-gitexe</artifactId>
          <version>1.8.1</version>
        </dependency>
       </dependencies>
      </plugin>
    </plugins>
</build>

git scm 1.8.1 版本正确地进行了 git 提交(使用准备和回滚目标进行测试)。

编辑:根据您的环境,可能需要不同版本的 maven-release-plugin 和 maven-scm-provider-gitexe。更多讨论请参见 cmets。

【讨论】:

  • 这解决了我使用 maven-release-plugin 2.4.2 的 git 问题。非常好。
  • @BumbleGee,你应该考虑接受这个答案!
  • 它不是用 maven-release-plugin2.5.2 修复的,如果您将 maven-release-plugin 依赖项定义为最新发布的版本( 1.9.4) 的 maven-scm-provider-gitexe 。我将 release-plugin dep.. 更改为 1.8.1,一切正常。
  • 我会第二个@TobiasHochgürtel。 2.5.2 和 1.9.4 的组合仍然存在错误。 2.5.2 和 1.8.1 似乎没问题。
  • 我仍然遇到问题,即 POM 中的更改未使用 Maven 3.3.1、maven-release-plugin 2.4.1 和 maven-scm-provider-gitexe 1.9 提交。更新到 maven-release-plugin 2.5.3 和 maven-scm-provider-gitexe 1.9.4 解决了这个问题。
【解决方案2】:

我遇到了同样的问题,#richnou 的解决方案对我有用(升级 SCM 依赖项)。 在此问题上创建了问题,请参见下面的链接。该问题与新版本的 Git 有关,其中“git status”返回插件无法解析的本地化消息。这是根本原因。通过使用 git 的--porcelain 选项(应该返回易于解析的输出)在 git scm(1.8.1 版本)中修复了该问题,但在此修复之后,又出现了另一个问题 - 如果存储库根(scm 标签)不是工作目录,release:prepare 仍然失败。此问题似乎已在 Git SCM 的快照版本(尚未发布)中得到修复。这可以通过将scm 标签复制到子 pom 中来解决。

MRELEASE-812

SCM-709

maven-release-plugin-and-git-fix

【讨论】:

  • 我也遇到了同样的问题。我有 maven 3.2.1 和 git 1.9.1。只是将发布插件更新到 2.5 对我不起作用,因为我拥有 pom 的目录不是 git root。正如richnou 建议的那样,我将 maven-scm-provider-gitexe 更新为最新的 1.9.2,它解决了问题。
【解决方案3】:

首先,richnou 和 vasekt 的答案解决了我的问题

我正在使用 Git 3.3.x 运行 maven 发布插件 2.3.2,但没有指定 maven scm 依赖版本,这导致了快照问题。对我来说,我当时刚刚升级到最新版本的 maven 发布插件和 scm 依赖项,如下所示:

<plugin>
   <artifactId>maven-release-plugin</artifactId>
   <version>2.5.3</version>
   <dependencies>
      <dependency>
         <groupId>org.apache.maven.scm</groupId>
         <artifactId>maven-scm-provider-gitexe</artifactId>
         <version>1.9.5</version>
      </dependency>
   </dependencies>
</plugin>

这对我来说很好,发布版本正确上传到发布存储库,并且快照也按预期工作。

【讨论】:

  • 就我而言,我只需要将 maven-release-plugin 升级到 2.5.3。不需要指定 gitexe 依赖项。
  • Maven 3.5.2,Maven-release-plugin 2.5.3 + provider 1.9.5 在 mvn release:prepare for me 之后不会提交 pom。然而,provider 1.8.1 确实如此。
  • 更新我上面的评论。 1.8.1 适用于提交单个 pom 项目,但不适用于多模块项目。
【解决方案4】:

您可能正在阅读本文,因为上述解决方案对您不起作用。 我有同样的问题,我尝试了这里提到的一切。 我的版本是:maven-release-plugin 2.5git 1.7.9

对我有用的解决方案是降级 maven-release-plugin 到版本 2.3.2

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <autoVersionSubmodules>true</autoVersionSubmodules>
            </configuration>
        </plugin>
    </plugins>
</build>

【讨论】:

  • 我有 maven-release-plugin-2.3.2 和 git v1.9.3 并升级到 maven-release-plugin-2.5 为我修复了它。
  • 我有 maven-release-plugin-2.3.1 和 git 1.9.4 并升级到 maven-release-plugin-2.5 也对我有用。
  • 将插件升级到2.5.2 解决了我的问题,使用 git 2.4.0
  • 可能是 git 版本 / mvn 版本互锁问题。为什么最新的maven(3.3.9)仍然默认发布插件为2.3.2?这是一个Maven错误吗? maven.apache.org/ref/3.3.9/maven-model-builder/super-pom.html
【解决方案5】:

maven-release-plugin 升级到 2.5.2 有帮助(升级到 2.5 没有帮助;它适用于某些人但不是所有人,可能取决于系统上的其他较新软件)。我相信它会自动引入新的提供者。

【讨论】:

  • 请注意:对我来说只要 2.5 就足够了。
【解决方案6】:

我刚刚遇到了同样的问题,从其他答案和 cmets 来看,这可能是发布插件本身的错误。

在我的例子中,我在一个新的且大部分为空的项目中使用 git 的 2.4 版插件,结构如下:

my-repo.git/
  module-parent/     # running the release from here
  (module-child-1/)  # except I hadn't created it yet
  (module-child-2/)  # except I hadn't created it yet

(这个项目的源码可以看这里,解决问题之前:my project with the same problem。)

看着release notes for maven-release-plugin:2.4.1,似乎 MRELEASE-830 有办法解决它。

我不确定这是否真的是问题,但将我的项目升级到插件的 2.4.1 为我解决了问题。希望它也能为您解决问题!

【讨论】:

    【解决方案7】:

    我在使用 cygwin+maven+git 时遇到了同样的问题。它没有显示错误但没有尝试提交 pom 更改,只是在 git status 之后停止:

    [INFO] Checking in modified POMs...
    [INFO] Executing: cmd.exe /X /C "git add -- pom.xml"
    [INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
    [INFO] Executing: cmd.exe /X /C "git status"
    [INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
    [INFO] Tagging release with the label portal-automation-0.3.9...
    [INFO] Executing: cmd.exe /X /C "git tag -F C:\cygwin64\tmp\maven-scm-1212196933.commit portal-automation-0.3.9"
    [INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
    [INFO] Executing: cmd.exe /X /C "git push git@barrel.mitre.org:org-mitre-caasd/portal-automation.git portal-automation-0.3.9"
    [INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
    [INFO] Executing: cmd.exe /X /C "git ls-files"
    [INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
    [INFO] Transforming 'portal-automation'...
    [INFO] Not removing release POMs
    [INFO] Checking in modified POMs...
    [INFO] Executing: cmd.exe /X /C "git add -- pom.xml"
    [INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
    [INFO] Executing: cmd.exe /X /C "git status"
    [INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
    [INFO] Release preparation complete.
    

    如您所见,没有错误,只是在检查状态后没有提交。但是,当我从 Windows 命令提示符运行时:

    ...
    [INFO] Executing: cmd.exe /X /C "git add -- pom.xml"
    [INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
    [INFO] Executing: cmd.exe /X /C "git status"
    [INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
    [INFO] Executing: cmd.exe /X /C "git commit --verbose -F C:\Users\ltheisen\AppData\Local\Temp\maven-scm-2030091036.commit pom.xml"
    [INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
    [INFO] Executing: cmd.exe /X /C "git symbolic-ref HEAD"
    [INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
    [INFO] Executing: cmd.exe /X /C "git push git@barrel.mitre.org:org-mitre-caasd/portal-automation.git master:master"
    [INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
    [INFO] Release preparation complete.
    

    你可以在检查状态后看到它确实提交了。不确定这是否也是您的问题,但它对我有用。

    请注意,这意味着您需要安装 msysgit

    【讨论】:

      【解决方案8】:

      我在本地使用 Git 1.8.x 遇到了类似的问题:

      maven-scm-plugin 可以

      $ git add
      $ git status
      

      但没有

      $ git commit
      

      使用另一台装有 Git 1.7.x 的机器帮助我解决了这个问题。

      注意:我尝试使用 maven-scm-plugin 1.8.1 或 1.9、maven-release-plugin 2.4.1 或 2.4.2。

      【讨论】:

      • 降级到 1.7.x 对我也有帮助
      【解决方案9】:

      类似的问题,但我遇到了这个问题,使用 Jenkins Release Plugin 和 Gitlab:

      • 第一次成功。
      • 第二次不提交。

      原来我们在 pom.xml 中的 SCM 配置中有错字,所以第一次创建了有错字的项目。第二次,Maven 访问过时的项目并抱怨,没有提交更改。

      【讨论】:

        猜你喜欢
        • 2015-11-12
        • 2018-09-13
        • 2020-05-15
        • 2013-02-18
        • 2013-10-21
        • 1970-01-01
        • 2010-11-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多