mvn版本:准备不提交对pom.xml的更改


81

我正在尝试使用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>

我究竟做错了什么?预先感谢您的见解!


不幸的是,我没有看到与您的解构相关的任何错误消息。您可以显示收到的错误消息吗?
khmarbaise

2
就是这样 根本没有错误消息。您对输出的特定部分感兴趣吗?(我想通过附加多页Maven命令行输出来避免膨胀问题)
BumbleGee 2013年

我只是遇到了完全相同的问题,并通过更新到maven-release-plugin 2.4版解决了它。
brk3

我也遇到了同样的问题,只是我通过将版本从2.4降级到2.3.2来解决了这个问题。去搞清楚。
格雷格案

2
我也遇到了问题,但是从2.4.1升级到2.5.1可以解决我的问题。
John Fear

Answers:


95

我通过更新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提交(已测试了prepare和rollback目标)。

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


1
这用maven-release-plugin 2.4.2解决了我的git问题。非常好。
kevinarpe 2014年

3
@BumbleGee,您应该考虑接受此答案!
ericbn 2014年

2
<artifactId> maven-release-plugin </ artifactId> <version> 2.5.2 </ version>并不能解决,如果您将maven-release-plugin依赖关系定义为maven-scm的最新发行版本(1.9.4) -provider-gitexe。我将release-plugin dep ..更改为1.8.1,一切正常。
TobiasHochgürtel15年

3
我将第二个@TobiasHochgürtel。2.5.2和1.9.4的组合仍然存在错误。2.5.2和1.8.1似乎还可以。
肯尼2015年

4
我仍然有一个问题,就是Maven 3.3.1,maven-release-plugin 2.4.1和maven-scm-provider-gitexe 1.9没有提交POM中的更改。更新到maven-release-plugin 2.5.3和maven-scm-provider-gitexe 1.9.4解决了该问题。
Sven Ackermann

17

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

MRELEASE-812

单片机709

Maven发布插件和git修复


我也有同样的问题。我已经Maven 3.2.1和git 1.9.1。只是将发行版插件更新为2.5对我不起作用,因为我拥有pom的目​​录不是git根目录。正如richnou所建议的,我将maven-scm-provider-gitexe更新为最新的1.9.2,它解决了问题。
Chathurika Sandarenu 2014年

9

首先,来自richnou和vasekt的答案解决了我的问题,我认为我之所以发布此答案,只是因为它的版本比所提到的要新,我认为再举一个包含它们的示例会很好。

我在未指定Maven scm依赖版本的情况下使用Git 3.3.x运行了Maven发布插件2.3.2,这导致了快照问题。对我来说,我当时将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>

这对我来说很好,发行版本正确上传到发行仓库,快照也按预期工作。


2
就我而言,我只需要将maven-release-plugin升级到2.5.3。无需指定gitexe依赖项。
colini

1
Maven 3.5.2,Maven-release-plugin 2.5.3 +提供程序1.9.5在mvn release之后不提交pom:为我准备。提供者1.8.1确实有。
Avec

更新以上我的评论。1.8.1适用于提交单个pom项目,但不适用于多模块项目。
Avec

9

您可能正在阅读本文,因为上述解决方案不适用于您。我遇到了同样的问题,并且尝试了此处提到的所有内容。我的版本是:maven-release-plugin 2.5git 1.7.9

该解决方案的工作对我来说是降级Maven的释放插件到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>

4
我安装了maven-release-plugin-2.3.2git v1.9.3,并maven-release-plugin-2.5对其进行了升级以对其进行修复。
肖恩·康诺利

我有maven-release-plugin-2.3.1和git1.9.4和升级maven-release-plugin-2.5也为我工作。
威尔士2014年

1
2.5.2使用git升级插件以为我解决问题2.4.0
JBCP 2015年

也许是git版本/ mvn版本互锁问题。为什么最新的Maven(3.3.9)仍将发布插件默认为2.3.2?这是Maven错误吗?maven.apache.org/ref/3.3.9/maven-model-builder/super-pom.html
史蒂文·R·洛米斯

4

升级maven-release-plugin到2.5.2很有帮助(升级到2.5无效;它对某些人有效,但并非对所有人都有效,可能取决于系统上其他较新的软件)。我相信它会自动引入新的提供程序。


请注意:对我而言,仅2.5就足够了。
Innokenty

1

我只是遇到了同样的问题,从其他答案和评论中,我发现这很可能是发行插件本身中的错误。

就我而言,我在一个新的且几乎是空的项目中使用了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

(在解决问题之前,可以在此处查看该项目的源代码:我的项目也存在同样的问题。)

查看maven-release-plugin:2.4.1发行说明,似乎MRELEASE-830可能已解决了这个问题。

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


1

使用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


1

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

Maven的SCM插件确实

$ 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还帮我
CAB

0

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

  • 第一次工作。
  • 第二次它不会提交。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.