我尝试用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>
我哪里做错了?
9条答案
按热度按时间bpsygsoo1#
我通过更新git scm提供者依赖项,而不是发布插件版本,解决了我这边的问题(运行maven 3.0.5):
git scm 1.8.1版本可以正确地提交git(使用prepare和rollback目标进行测试)。
编辑:根据您的环境,可能需要不同版本的maven-release-plugin和maven-scm-provider-gitexe。更多讨论请参见评论。
ffvjumwh2#
我遇到了同样的问题,#richnou的解决方案适合我(升级SCM依赖关系)。此问题上存在创建的问题,请参阅下面的链接。这个问题与新版本的Git有关,其中“git status”返回插件无法解析的本地化消息。这是根本原因。这个问题在git scm中得到了修复(1.8.1版本)通过使用git的
--porcelain
选项(应该返回易于解析的输出),但是在此修复之后,出现了另一个问题-如果存储库根目录(SCM标记)不是工作目录,release:prepare
仍然失败。此问题似乎已在快照版本的Git SCM中得到修复(尚未发布)。这可以通过将scm
标记复制到子pom中来解决。MRELEASE-812
SCM-709
maven-release-plugin-and-git-fix
wrrgggsh3#
首先,richnou和vasekt的回答解决了我的问题,我想我会发布这个答案,只是因为比已经提到的更新版本,我认为这将给予一个很好的额外的例子,包括他们。
我在Git 3.3.x上运行maven发行版插件2.3.2时没有指定maven scm依赖项版本,这导致了快照问题。对我来说,我只是升级到了当时maven发行版插件和scm依赖项的最新版本,如下所示:
这对我来说工作得很好,发布版本正确地上传到发布回购协议,快照也按预期工作。
5m1hhzi44#
你读这篇文章可能是因为上面的解决方案对你不起作用。我遇到了同样的问题,我尝试了这里提到的所有方法。我的版本是:
maven-release-plugin 2.5
和git 1.7.9
对我有效的解决方案是将maven-release-plugin降级到版本2.3.2
a0x5cqrl5#
将
maven-release-plugin
升级到2.5.2有帮助(升级到2.5没有帮助;它对一些人有效,但不是所有人,可能取决于系统上其他较新的软件)。我相信它会自动拉入新的提供商。7uzetpgm6#
我刚刚遇到了同样的问题,从其他的回答和评论中,我认为这很可能是发布插件本身的bug。
在我的例子中,我在一个新的、几乎是空的项目中使用了git插件的2.4版本,结构如下:
(The在解决问题之前,可以在此处查看此项目的源代码:my project with the same problem .)
看看release notes for maven-release-plugin:2.4.1,似乎MRELEASE-830有机会解决这个问题。
我不确定这是否真的 * 是 * 问题所在,但是把我的项目升级到插件的2.4.1版本为我解决了这个问题。希望它也能为你解决这个问题!
z3yyvxxp7#
我在使用cygwin+maven+git时遇到了同样的问题,它没有显示错误,但没有尝试提交pom更改,只是在
git status
后停止:正如你所看到的,没有错误,只是在检查状态后没有提交。然而,当我从windows命令提示符运行时:
你可以看到它在检查状态后提交了。不确定这是否也是你的问题,但它对我很有效。
r7xajy2e8#
我在本地使用Git 1.8.x时遇到了类似的问题:
maven-scm插件
但是没有
使用另一台机器与Git 1.7.x帮助我解决了这个问题。
注意:我尝试使用maven-scm-插件1.8.1或1.9,maven-版本-插件2.4.1或2.4.2。
wrrgggsh9#
类似的问题,但我有这个问题,使用Jenkins发布插件和Gitlab:
我们发现pom.xml的SCM配置中有一个打字错误,所以第一次创建了有打字错误的项目,第二次,Maven访问了过时的项目并抱怨,没有提交更改。