Ich versuche, ein Jenkins-Plugin ( stashNotifier ) mit Maven zu veröffentlichen und habe ein Problem mit dem Release-Plugin.
mvn clean release:prepare
Läuft ohne Fehler vollständig, kann jedoch die geänderte Datei pom.xml in meinem lokalen Git-Repository nicht festschreiben. Obwohl es den HEAD des Zweigs markiert, auf dem ich Version 1.0.2 veröffentlichen möchte. So sieht meine lokale Niederlassung aus, bevor die Veröffentlichung vorbereitet wird
* df60768 (HEAD, origin/develop, develop) upgraded parent pom to version 1.498
* 792766a added distribution management section to pom.xml and amended readme.md
und so sieht es danach aus
* 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
Leider enthält die Datei pom.xml bereits die nächste Entwicklungsversion, was wiederum zu einer nachfolgenden Veröffentlichung führt: perform, um diese Snapshot-Version freizugeben.
In der Befehlsausgabe von maven sieht es fast so aus, als würde der Befehl git commit weggelassen:
[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 [email protected]: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.
Ich verwende Maven 3.0.5 (ohne --dry-run oder -DpushChanges = false). Hier sind die relevanten (ich denke) Teile meines effektiven Poms:
[...]
<scm>
<connection>scm:git:git://github.com/jenkinsci/stashnotifier-plugin.git</connection>
<developerConnection>scm:git:[email protected]: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:[email protected]/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>
Was mache ich falsch? Vielen Dank im Voraus für Ihre Erkenntnisse!
Antworten:
Ich habe das Problem auf meiner Seite (mit Maven 3.0.5) gelöst, indem ich die Abhängigkeit des Git-SCM-Anbieters aktualisiert habe, nicht die Version des Release-Plugins:
<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>
Die Version git scm 1.8.1 führt das Git-Commit korrekt aus (getestet mit den Vorbereitungs- und Rollback-Zielen).
BEARBEITEN: Abhängig von Ihrer Umgebung sind möglicherweise verschiedene Versionen des Maven-Release-Plugins und des Maven-SCM-Provider-Gitexe erforderlich. Weitere Informationen finden Sie in den Kommentaren.
quelle
Ich bin auf das gleiche Problem gestoßen, die Lösung von #richnou funktioniert für mich (Aktualisierung der SCM-Abhängigkeit). Bei diesem Problem ist ein Problem aufgetreten, siehe Link unten. Das Problem betrifft eine neue Version von Git, bei der "git status" lokalisierte Nachrichten zurückgibt, die das Plugin nicht analysieren kann. Es ist die Grundursache. Das Problem wurde in git scm (Version 1.8.1) mithilfe der
--porcelain
Option git behoben ( die eine leicht analysierbare Ausgabe zurückgeben sollte). Nach diesem Fix ist jedoch ein anderes Problem aufgetreten - wenn das Repository-Stammverzeichnis (scm-Tag) nicht das Arbeitsverzeichnis ist.release:prepare
scheitert immer noch. Dieses Problem scheint in der Snapshot-Version von Git SCM behoben zu sein (noch nicht veröffentlicht). Dies kann umgangen werden, indem dasscm
Tag in den untergeordneten POM kopiert wird .MRELEASE-812
SCM-709
Maven-Release-Plugin-und-Git-Fix
quelle
Erstens lösten die Antworten von richnou und vasekt mein Problem. Ich dachte, ich würde diese Antwort nur wegen neuerer Versionen als erwähnt veröffentlichen, und ich dachte, es wäre gut, ein zusätzliches Beispiel zu geben, das sie enthält.
Ich habe das Maven Release Plugin 2.3.2 mit Git 3.3.x ausgeführt, ohne die Maven SCM-Abhängigkeitsversion anzugeben, die das Snapshot-Problem verursacht hat. Für mich habe ich gerade ein Upgrade auf die neueste Version für das Maven Release Plugin und die SCM-Abhängigkeit durchgeführt, die wie folgt waren:
<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>
Dies funktionierte gut für mich, Release-Versionen wurden ordnungsgemäß in das Release-Repo hochgeladen und der Snapshot funktionierte ebenfalls wie erwartet.
quelle
Sie lesen dies wahrscheinlich, weil die oben genannten Lösungen für Sie nicht funktioniert haben. Ich hatte das gleiche Problem und habe alles versucht, was hier erwähnt wurde. Meine Versionen waren:
maven-release-plugin 2.5
undgit 1.7.9
Die Lösung, die für mich funktioniert hat, war das Downgrade des Maven-Release-Plugins auf Version 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>
quelle
maven-release-plugin-2.3.2
und git v1.9.3 und ein Upgrade, ummaven-release-plugin-2.5
es für mich zu beheben .maven-release-plugin-2.3.1
und git1.9.4
und Upgrade, ummaven-release-plugin-2.5
auch für mich zu arbeiten.2.5.2
das Problem für mich zu lösen, mit git2.4.0
Ein Upgrade
maven-release-plugin
auf 2.5.2 hat geholfen (ein Upgrade auf 2.5 hat nicht geholfen; es funktioniert bei einigen Leuten, aber nicht bei allen, möglicherweise abhängig von anderer neuerer Software auf dem System). Ich glaube, es zieht automatisch den neuen Anbieter ein.quelle
Ich bin gerade auf dasselbe Problem gestoßen und habe anhand der anderen Antworten und Kommentare herausgefunden, dass es sich wahrscheinlich um einen Fehler im Release-Plugin selbst handelt.
In meinem Fall habe ich Version 2.4 des Plugins mit git in einem neuen und größtenteils leeren Projekt verwendet, das wie folgt strukturiert ist:
(Der Quellcode für dieses Projekt ist hier zu sehen, bevor das Problem behoben wird: Mein Projekt mit demselben Problem .)
In den Versionshinweisen für das Maven-Release-Plugin: 2.4.1 schien es, als hätte MRELEASE-830 eine Chance, das Problem zu beheben.
Ich bin mir nicht sicher , ob das tatsächlich war das Problem, aber mein Projekt 2.4.1 des Plugins aktualisieren aufgelöst es für mich . Hoffe, es löst das Problem auch für Sie!
quelle
Ich habe das gleiche Problem bei der Verwendung von Cygwin + Maven + Git festgestellt. Es wurden keine Fehler angezeigt, aber es wurde nicht versucht, die POM-Änderungen festzuschreiben. Es wurde nur gestoppt, nachdem
git status
:Wie Sie sehen können, keine Fehler, nur nach Überprüfung des Status nicht festgeschrieben. Wenn ich jedoch stattdessen über die Windows-Eingabeaufforderung lief:
Sie können sehen, dass es festgeschrieben wurde, nachdem Sie den Status überprüft haben. Ich bin mir nicht sicher, ob dies auch Ihr Problem ist, aber es hat bei mir funktioniert.
Beachten Sie, dass dies bedeuten würde, dass Sie msysgit installieren müssen
quelle
Ich verwende Git 1.8.x lokal und bin auf ein ähnliches Problem gestoßen:
maven-scm-plugin macht
aber nein
Die Verwendung eines anderen Computers mit Git 1.7.x hat mir geholfen, dieses Problem zu umgehen.
Hinweis: Ich habe versucht, das Maven-SCM-Plugin 1.8.1 oder 1.9, das Maven-Release-Plugin 2.4.1 oder 2.4.2 zu verwenden.
quelle
Ähnliches Problem, aber ich hatte dieses Problem mit Jenkins Release Plugin und Gitlab:
Es stellte sich heraus, dass wir in unserer pom.xml einen Tippfehler in der SCM-Konfiguration hatten, sodass das Projekt mit Tippfehler beim ersten Mal erstellt wurde. Beim zweiten Mal griff Maven auf das veraltete Projekt zu und beschwerte sich, ohne die Änderungen zu übernehmen.
quelle