wydanie mvn: przygotuj niezatwierdzenie zmian w pom.xml

81

Próbuję wydać wtyczkę Jenkinsa ( stashNotifier ) z Mavenem i napotykam problem z wtyczką do wydania.

mvn clean release:prepare

działa do końca bez błędów, ale nie zatwierdza zmienionego pom.xml w moim lokalnym repozytorium git. Mimo że oznacza to HEAD gałęzi, w której próbuję wydać wersję 1.0.2. Tak wygląda mój lokalny oddział przed przygotowaniem wydania

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

i tak to wygląda po

* 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 

Niestety, pom.xml zawiera już kolejną wersję rozwojową, co z kolei powoduje kolejne wydanie: perform, aby wydać tę wersję migawki.

Z danych wyjściowych polecenia maven wygląda prawie tak, jakby pomijał polecenie 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 [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.

Używam maven 3.0.5 (bez --dry-run lub -DpushChanges = false). Oto odpowiednie (myślę) części mojego skutecznego pom:

[...]

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

Co ja robię źle? Z góry dziękujemy za spostrzeżenia!

BumbleGee
źródło
Niestety nie widzę żadnego komunikatu o błędzie związanego z Twoim opisem. Czy możesz wyświetlić komunikaty o błędach, które otrzymujesz?
khmarbaise,
2
To jest myśl; nie ma żadnych komunikatów o błędach. Czy jesteś zainteresowany konkretną sekcją wyjścia? (Chciałbym uniknąć nadęcia pytania, dołączając wielostronicowe wyjście wiersza poleceń
Maven
Właśnie miałem ten sam problem i rozwiązałem go, aktualizując wtyczkę maven-release-plugin do wersji 2.4.
brk3
Miałem też ten sam problem, tylko naprawiłem go, przechodząc z wersji 2.4 do 2.3.2. Domyśl.
Greg Case,
2
Miałem też problem, ale aktualizacja z 2.4.1 do 2.5.1 rozwiązała go za mnie.
John Fear

Odpowiedzi:

95

Rozwiązałem problem po mojej stronie (uruchomiłem maven 3.0.5), aktualizując zależność dostawcy git scm, a nie wersję wtyczki wydania:

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

Wersja git scm 1.8.1 poprawnie wykonuje zatwierdzenie git (testowane z celami przygotowania i wycofania).

EDYCJA: W zależności od środowiska mogą być wymagane różne wersje maven-release-plugin i maven-scm-provider-gitexe. Zobacz komentarze, aby uzyskać więcej dyskusji.

richnou
źródło
1
To rozwiązało mój problem z gitem z maven-release-plugin 2.4.2. Bardzo dobrze.
kevinarpe
3
@BumbleGee, powinieneś rozważyć zaakceptowanie tej odpowiedzi!
ericbn
2
Nie jest to naprawione przez <artifactId>maven-release-plugin</artifactId> <version> 2.5.2 </version> i jeśli zdefiniujesz zależność maven-release-plugin do najnowszej wydanej wersji (1.9.4) maven-scm -provider-gitexe. Zmieniłem skład wtyczki wydania .. na 1.8.1 i wszystko działało dobrze.
Tobias Hochgürtel
3
Będę drugi @ TobiasHochgürtel. Kombinacja wersji 2.5.2 i 1.9.4 nadal zawiera błąd. 2.5.2 i 1.8.1 wydaje się być w porządku.
kenny
4
Nadal miałem problem, że zmiany w POM nie zostały zatwierdzone w Maven 3.3.1, maven-release-plugin 2.4.1 i maven-scm-provider-gitexe 1.9. Aktualizacja do maven-release-plugin 2.5.3 i maven-scm-provider-gitexe 1.9.4 rozwiązała problem.
Sven Ackermann
17

Natknąłem się na ten sam problem, rozwiązanie przez #richnou działa dla mnie (aktualizacja zależności SCM). Istnieje problem utworzony w związku z tym problemem, patrz link poniżej. Problem dotyczy nowej wersji Gita, w której „stan git” zwraca zlokalizowane komunikaty, których wtyczka nie może przeanalizować. To jest główna przyczyna. Problem został rozwiązany w git scm (wersja 1.8.1) za pomocą --porcelainopcji git (która powinna zwrócić łatwe do przeanalizowania dane wyjściowe), ale po tej poprawce pojawił się inny problem - jeśli katalog główny repozytorium (tag scm) nie jest katalogiem roboczym, release:preparenadal zawodzi. Wydaje się, że ten problem został rozwiązany w wersji migawkowej Git SCM (jeszcze nie wydanej). Można to obejść, kopiując scmtag do pom dziecięcego.

MRELEASE-812

SCM-709

maven-release-plugin-and-git-fix

vasekt
źródło
Ja też miałem ten sam problem. Mam Maven 3.2.1 i Git 1.9.1. Sama aktualizacja wtyczki do wydania 2.5 nie zadziałała, ponieważ katalog, w którym miałem pom, nie był katalogiem głównym git. Jak zasugerował richnou, zaktualizowałem maven-scm-provider-gitexe do najnowszej wersji 1.9.2 i rozwiązałem problem.
Chathurika Sandarenu
9

Po pierwsze, odpowiedzi z richnou i vasekt rozwiązały mój problem. Pomyślałem, że opublikuję tę odpowiedź tylko z powodu nowszych wersji, niż zostały wymienione, i pomyślałem, że dobrze byłoby podać dodatkowy przykład, w tym je.

Używałem wtyczki Maven Release 2.3.2 z Git 3.3.x bez określania wersji zależności maven scm, która powodowała problem z migawką. Dla mnie właśnie zaktualizowałem do najnowszej wersji w tym czasie zarówno dla wtyczki do wydania maven, jak i zależności scm, które były następujące:

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

Dla mnie to zadziałało dobrze, wersje wydania zostały poprawnie przesłane do repozytorium wydania, a migawka również działała zgodnie z oczekiwaniami.

Jeremy
źródło
2
W moim przypadku musiałem tylko zaktualizować wtyczkę maven-release-plugin do 2.5.3. Nie było potrzeby określania zależności gitexe.
colini
1
Maven 3.5.2, Maven-release-plugin 2.5.3 + dostawca 1.9.5 nie zatwierdza pomów po wydaniu mvn: przygotuj się dla mnie. dostawca 1.8.1 robi to jednak.
Avec
Zaktualizuj mój komentarz powyżej. 1.8.1 działa przy zatwierdzaniu pojedynczego projektu pom, ale nie w przypadku projektów wielomodułowych.
Avec
9

Prawdopodobnie to czytasz, ponieważ powyższe rozwiązania nie zadziałały. Miałem ten sam problem i próbowałem wszystkiego, o czym tutaj wspomniano. Moje wersje to: maven-release-plugin 2.5igit 1.7.9

Rozwiązaniem, które działało , było obniżenie wersji wtyczki maven-release-plugin do wersji 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
źródło
4
Miałem maven-release-plugin-2.3.2i git v1.9.3 i aktualizację, aby maven-release-plugin-2.5naprawić to za mnie.
Sean Connolly,
Miałem maven-release-plugin-2.3.1i git 1.9.4i upgrade do maven-release-plugin-2.5również działały dla mnie.
Walijski
1
Aktualizacja wtyczki, aby 2.5.2rozwiązać problem za mnie, z git2.4.0
JBCP
być może jest to problem z blokadą wersji git / mvn. Dlaczego najnowszy maven (3.3.9) nadal domyślnie obsługuje wtyczkę wydania 2.3.2? Czy to błąd maven? maven.apache.org/ref/3.3.9/maven-model-builder/super-pom.html
Steven R. Loomis
4

Aktualizacja maven-release-plugindo 2.5.2 pomogła (aktualizacja do 2.5 nie; działa dla niektórych osób, ale nie dla wszystkich, prawdopodobnie w zależności od innego nowszego oprogramowania w systemie). Uważam, że automatycznie przyciąga nowego dostawcę.

mirabilos
źródło
Uwaga: dla mnie wystarczyło tylko 2,5.
Innokenty
1

Właśnie napotkałem ten sam problem i na podstawie innych odpowiedzi i komentarzy doszedłem do wniosku, że prawdopodobnie był to błąd w samej wtyczce do wydania.

W moim przypadku korzystałem z wersji 2.4 wtyczki z gitem w nowym i przeważnie pustym projekcie o następującej strukturze:

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

(Kod źródłowy tego projektu można zobaczyć tutaj, przed rozwiązaniem problemu: mój projekt z tym samym problemem .)

Patrząc na informacje o wydaniu dla maven-release-plugin: 2.4.1 , wydawało się, że być może MRELEASE-830 miał szansę na rozwiązanie tego problemu.

Nie jestem pewien, czy to rzeczywiście był problem, ale aktualizacja mojego projektu do wersji 2.4.1 wtyczki rozwiązała go za mnie . Mam nadzieję, że to również rozwiąże problem!

Karl M. Davis
źródło
1

Napotkałem ten sam problem podczas korzystania z cygwin + maven + git. Nie pokazał błędów, ale nie próbował wprowadzić zmian pom, po prostu zatrzymał się po 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.

Jak widać, żadnych błędów, po prostu nie popełniono po sprawdzeniu statusu. Jednak gdy zamiast tego uruchomiłem z wiersza polecenia systemu 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 [email protected]:org-mitre-caasd/portal-automation.git master:master"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Release preparation complete.

Możesz zobaczyć, że zatwierdziło się po sprawdzeniu statusu. Nie jestem pewien, czy to również twój problem, ale zadziałało dla mnie.

Zauważ, że oznaczałoby to, że musisz zainstalować msysgit

Lucas
źródło
1

Używam Git 1.8.x lokalnie i napotkałem podobny problem:

maven-scm-plugin tak

$ git add
$ git status

ale nie

$ git commit

Użyj innej maszyny z Git 1.7.x pomogło mi obejść ten problem.

Uwaga: próbowałem użyć maven-scm-plugin 1.8.1 lub 1.9, maven-release-plugin 2.4.1 lub 2.4.2.

Lukas Fryc
źródło
obniżenie do 1.7.x również mi pomogło
CAB
0

Podobny problem, ale miałem ten problem, używając wtyczki Jenkins Release i Gitlab:

  • Za pierwszym razem zadziałało.
  • Za drugim razem się nie popełni.

Okazało się, że mieliśmy literówkę w konfiguracji SCM w naszym pom.xml, więc projekt z literówką został utworzony za pierwszym razem. Za drugim razem Maven uzyskiwał dostęp do przestarzałego projektu i narzekał, nie wprowadzając zmian.

exic
źródło