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!
Odpowiedzi:
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.
źródło
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ą
--porcelain
opcji 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:prepare
nadal zawodzi. Wydaje się, że ten problem został rozwiązany w wersji migawkowej Git SCM (jeszcze nie wydanej). Można to obejść, kopiującscm
tag do pom dziecięcego.MRELEASE-812
SCM-709
maven-release-plugin-and-git-fix
źródło
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.
źródło
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.5
igit 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>
źródło
maven-release-plugin-2.3.2
i git v1.9.3 i aktualizację, abymaven-release-plugin-2.5
naprawić to za mnie.maven-release-plugin-2.3.1
i git1.9.4
i upgrade domaven-release-plugin-2.5
również działały dla mnie.2.5.2
rozwiązać problem za mnie, z git2.4.0
Aktualizacja
maven-release-plugin
do 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ę.źródło
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:
(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!
źródło
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
: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:
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
źródło
Używam Git 1.8.x lokalnie i napotkałem podobny problem:
maven-scm-plugin tak
ale nie
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.
źródło
Podobny problem, ale miałem ten problem, używając wtyczki Jenkins Release i Gitlab:
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.
źródło