mvn release: Bereiten Sie vor, keine Änderungen an pom.xml vorzunehmen

81

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!

BumbleGee
quelle
Leider sehe ich keine Fehlermeldung, die sich auf Ihre Beschreibung bezieht. Können Sie die Fehlermeldungen anzeigen, die Sie erhalten?
Khmarbaise
2
Das ist es; Es gibt überhaupt keine Fehlermeldungen. Interessieren Sie sich für einen bestimmten Abschnitt der Ausgabe? (Ich möchte vermeiden, die Frage durch Aufhängen der mehrseitigen Maven-Befehlszeilenausgabe aufzublähen.)
BumbleGee
Ich hatte gerade genau das gleiche Problem und löste es durch ein Update auf Version 2.4 des Maven-Release-Plugins.
Brk3
Ich hatte auch das gleiche Problem, nur habe ich es durch ein Downgrade von Version 2.4 auf 2.3.2 behoben. Stelle dir das vor.
Greg Case
2
Ich hatte auch das Problem, aber ein Upgrade von 2.4.1 auf 2.5.1 löste es für mich.
John Fear

Antworten:

95

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.

Richnou
quelle
1
Dies löste mein Git-Problem mit dem Maven-Release-Plugin 2.4.2. Sehr schön.
Kevinarpe
3
@BumbleGee, du solltest diese Antwort akzeptieren!
Ericbn
2
Es ist nicht behoben mit <artifactId> maven-release-plugin </ artifactId> <version> 2.5.2 </ version> und wenn Sie die Abhängigkeit des Maven-Release-Plugins von der neuesten veröffentlichten Version (1.9.4) von maven-scm definieren -provider-gitexe. Ich habe das Release-Plugin dep .. auf 1.8.1 geändert und alles hat gut funktioniert.
Tobias Hochgürtel
3
Ich werde @ TobiasHochgürtel zweitens. Combo von 2.5.2 & 1.9.4 hat immer noch einen Fehler. 2.5.2 & 1.8.1 scheinen in Ordnung zu sein.
Kenny
4
Ich hatte immer noch das Problem, dass die Änderungen in den POMs nicht mit Maven 3.3.1, Maven-Release-Plugin 2.4.1 und Maven-SCM-Provider-Gitexe 1.9 festgeschrieben wurden. Das Update auf maven-release-plugin 2.5.3 und maven-scm-provider-gitexe 1.9.4 löste das Problem.
Sven Ackermann
17

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 --porcelainOption 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:preparescheitert immer noch. Dieses Problem scheint in der Snapshot-Version von Git SCM behoben zu sein (noch nicht veröffentlicht). Dies kann umgangen werden, indem das scmTag in den untergeordneten POM kopiert wird .

MRELEASE-812

SCM-709

Maven-Release-Plugin-und-Git-Fix

vasekt
quelle
Ich hatte auch das gleiche Problem. Ich habe 3.2.1 und Git 1.9.1. Nur das Update-Plugin auf 2.5 zu aktualisieren, hat bei mir nicht funktioniert, da das Verzeichnis, in dem ich den POM hatte, nicht das Git-Root war. Wie Richnou vorgeschlagen hat, habe ich die maven-scm-provider-gitexe auf die neueste Version 1.9.2 aktualisiert und das Problem gelöst.
Chathurika Sandarenu
9

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.

Jeremy
quelle
2
In meinem Fall musste ich nur das Maven-Release-Plugin auf 2.5.3 aktualisieren. Es war nicht notwendig, die Gitexe-Abhängigkeit anzugeben.
Colini
1
Maven 3.5.2, Maven-Release-Plugin 2.5.3 + Provider 1.9.5 schreibt die POMs nach der MVN-Veröffentlichung nicht fest: Bereiten Sie sich auf mich vor. Anbieter 1.8.1 tut dies jedoch.
Avec
Update zu meinem Kommentar oben. 1.8.1 funktioniert für das Festschreiben eines einzelnen POM-Projekts, jedoch nicht für Projekte mit mehreren Modulen.
Avec
9

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.5undgit 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>
Iulian Ghionoiu
quelle
4
Ich hatte maven-release-plugin-2.3.2und git v1.9.3 und ein Upgrade, um maven-release-plugin-2.5es für mich zu beheben .
Sean Connolly
Ich hatte maven-release-plugin-2.3.1und git 1.9.4und Upgrade, um maven-release-plugin-2.5auch für mich zu arbeiten.
Walisisch
1
Upgrade des Plugins, um 2.5.2das Problem für mich zu lösen, mit git2.4.0
JBCP
Vielleicht handelt es sich um ein Interlock-Problem zwischen Git-Version und MVN-Version. Warum verwendet der neueste Maven (3.3.9) das Release-Plugin immer noch standardmäßig auf 2.3.2? Ist das ein Maven Bug? maven.apache.org/ref/3.3.9/maven-model-builder/super-pom.html
Steven R. Loomis
4

Ein Upgrade maven-release-pluginauf 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.

Mirabilos
quelle
Nur zur Anmerkung: Für mich waren nur 2,5 genug.
Innokenty
1

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:

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

(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!

Karl M. Davis
quelle
1

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:

[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 [email protected]: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.

Wie Sie sehen können, keine Fehler, nur nach Überprüfung des Status nicht festgeschrieben. Wenn ich jedoch stattdessen über die Windows-Eingabeaufforderung lief:

...
[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 [email protected]:org-mitre-caasd/portal-automation.git master:master"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Release preparation complete.

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

Lucas
quelle
1

Ich verwende Git 1.8.x lokal und bin auf ein ähnliches Problem gestoßen:

maven-scm-plugin macht

$ git add
$ git status

aber nein

$ git commit

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.

Lukas Fryc
quelle
Ein Downgrade auf 1.7.x hat mir auch geholfen
CAB
0

Ähnliches Problem, aber ich hatte dieses Problem mit Jenkins Release Plugin und Gitlab:

  • Zum ersten Mal hat es funktioniert.
  • Zum zweiten Mal würde es nicht begehen.

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.

exic
quelle