випуск mvn: підготуйтеся не фіксувати зміни в pom.xml


81

Я намагаюся випустити плагін Jenkins ( stashNotifier ) з Maven і зіткнутися з проблемою з плагіном release.

mvn clean release:prepare

запускається до завершення без помилок, але не вдається зафіксувати змінений pom.xml у моєму локальному сховищі git. Хоча він і позначає HEAD гілки, на якій я намагаюся випустити версію 1.0.2. Ось так виглядає моя місцева філія перед підготовкою випуску

* 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 вже містить наступну версію розробки, що, в свою чергу, спричиняє наступний випуск: виконайте, щоб випустити цю версію знімка.

З виводу команди 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). Ось відповідні (я думаю) частини мого ефективного пом:

[...]

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

Що я роблю не так? Заздалегідь дякуємо за вашу думку!


На жаль, я не бачу жодного повідомлення про помилку, пов’язаного з вашим описом. Чи можете ви показати отримані повідомлення про помилки?
khmarbaise 02.03.13

2
Ось у чому річ; повідомлень про помилки взагалі немає. Вас цікавить певний розділ результату? (Я б хотів уникнути здуття запитання, додавши багатосторінковий висновок командного рядка maven)
BumbleGee 03.03.13

Я просто мав точно таку ж проблему і вирішив її, оновивши до версії 2.4 maven-release-plugin.
brk3 06.03.13

У мене теж була та сама проблема, тільки я її виправив, перейшовши з версії 2.4 на 2.3.2. Піди розберися.
Справа Грега

2
У мене також була проблема, але оновлення з 2.4.1 до 2.5.1 вирішило її для мене.
John Fear,

Відповіді:


95

Я вирішив проблему на своєму боці (запустив maven 3.0.5), оновивши залежність провайдера git scm, а не версію плагіна випуску:

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

Версія git scm 1.8.1 правильно робить коміт git (протестовано з метою підготовки та відкоту).

РЕДАГУВАТИ: Залежно від вашого середовища можуть знадобитися різні версії плагіна maven-release-plugin та maven-scm-provider-gitexe. Див. Коментарі для подальшого обговорення.


1
Це вирішило мою проблему з git з maven-release-plugin 2.4.2. Дуже мило.
kevinarpe

3
@BumbleGee, ти повинен розглянути можливість прийняти цю відповідь!
ericbn

2
Це не виправлено за допомогою <artifactId>maven-release-plugin</artifactId> <version> 2.5.2 </version>, і якщо ви визначаєте залежність maven-release-plugin до останньої випущеної версії (1.9.4) maven-scm -провайдер-gitexe. Я змінив випуск-плагін деп .. на 1.8.1 і все працювало гарно.
Тобіас Хохгюртель

3
Я буду другим @ TobiasHochgürtel. Комбо з версій 2.5.2 та 1.9.4 все ще має помилку. 2.5.2 & 1.8.1 здається нормальним.
kenny 02

4
У мене все ще була проблема, що зміни у POM не були здійснені з Maven 3.3.1, maven-release-plugin 2.4.1 та maven-scm-provider-gitexe 1.9. Оновлення до maven-release-plugin 2.5.3 та maven-scm-provider-gitexe 1.9.4 вирішило проблему.
Свен Аккерман

17

Я зіткнувся з тією ж проблемою, рішення #richnou працює для мене (оновлення залежності SCM). Існує проблема, створена з цією проблемою, див. Посилання нижче. Проблема пов'язана з новою версією Git, де "git status" повертає локалізовані повідомлення, плагін яких не може проаналізувати. Це першопричина. Проблему було виправлено у git scm (версія 1.8.1) за допомогою --porcelainопції git (яка повинна повертати легко проаналізований вивід), але після цього виправлення піднялася інша проблема - якщо корінь сховища (тег scm) не є робочим каталогом, release:prepareвсе ще не вдається. Здається, ця проблема виправлена ​​у знімку версії Git SCM (ще не випущена). Це можна вирішити, скопіювавши scmтег у дочірній пам .

MRELEASE-812

SCM-709

maven-release-plugin-and-git-fix


У мене теж було те саме питання. Я maven 3.2.1 та git 1.9.1. Просто оновлення плагіна випуску до 2.5 не працювало для мене, оскільки каталог, який я мав, не був кодом git. Як запропонував Річнеу, я оновив maven-scm-provider-gitexe до останнього, який був 1.9.2, і це вирішило проблему.
Chathurika Sandarenu

9

По-перше, відповіді від richnou та vasekt вирішили мою проблему. Я думав, що розміщу цю відповідь лише через новіші версії, ніж було згадано, і я вважав, що було б добре навести додатковий приклад, включаючи їх.

Я запускав плагін випуску maven 2.3.2 з Git 3.3.x, не вказуючи версію залежності maven scm, яка спричинила проблему зйомки. Для мене я нещодавно оновив до останньої версії як плагін випуску maven, так і залежність scm, які були такими:

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

Для мене це добре працювало, версії релізу завантажувались належним чином у репозиторій релізу, а знімок також працював, як очікувалося.


2
У моєму випадку мені довелось лише оновити maven-release-plugin до 2.5.3. Не потрібно було вказувати залежність gitexe.
colini

1
Maven 3.5.2, Maven-release-plugin 2.5.3 + провайдер 1.9.5 не фіксує пам’ятки після випуску mvn: підготуйтеся до мене. провайдер 1.8.1, однак.
Avec,

Оновити мій коментар вище. 1.8.1 працює для створення одного проекту, але не для багатомодульних проектів.
Avec

9

Ви, мабуть, читаєте це, оскільки вищезазначені рішення для вас не працювали. У мене була та сама проблема, і я спробував усе, що тут згадано. Моїми версіями були: maven-release-plugin 2.5іgit 1.7.9

Рішення, яке спрацювало для мене, було зниження плагіна maven-release-plugin до версії 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>

4
Я мав maven-release-plugin-2.3.2і git v1.9.3 та оновлення, щоб maven-release-plugin-2.5це виправити для мене.
Шон Конноллі,

Я мав maven-release-plugin-2.3.1і git 1.9.4та модернізацію, щоб maven-release-plugin-2.5також працював у мене.
Валлійська

1
Оновлення плагіна для 2.5.2вирішення проблеми для мене, з git2.4.0
JBCP

можливо, це проблема блокування версії git / mvn. Чому останній maven (3.3.9) все ще за замовчуванням надає плагін випуску до 2.3.2? Це помилка maven? maven.apache.org/ref/3.3.9/maven-model-builder/super-pom.html
Стівен Р. Луміс

4

Оновлення maven-release-pluginдо 2.5.2 допомогло (оновлення до 2.5 не допомогло; це працює для деяких людей, але не для всіх, можливо, залежно від іншого нового програмного забезпечення в системі). Я вважаю, що це автоматично залучає нового постачальника.


Тільки зауважимо: для мене було достатньо лише 2,5.
Інокентій

1

Я щойно зіткнувся з цією ж проблемою, і з інших відповідей та коментарів зрозумів, що це, ймовірно, помилка у самому плагіні випуску.

У моєму випадку я використовував версію 2.4 плагіна з git у новому і переважно порожньому проекті, структурованому наступним чином:

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

(Вихідний код цього проекту можна переглянути тут, перш ніж вирішити проблему: мій проект з тією ж проблемою .)

Дивлячись на примітки до випуску для maven-release-plugin: 2.4.1 , здавалося, можливо MRELEASE-830 вирішив це.

Я не впевнений, чи насправді це була проблема, але оновлення мого проекту до 2.4.1 плагіна вирішило це для мене . Сподіваюся, це вирішить проблему і для вас!


1

Я зіткнувся з цією ж проблемою при використанні cygwin + maven + git. Він не показав помилок, але не намагався здійснити зміни pom, просто зупинився після 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 git@barrel.mitre.org: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.

Як бачите, помилок не було, просто не здійснено після перевірки стану. Однак, коли я запустив командний рядок 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 git@barrel.mitre.org:org-mitre-caasd/portal-automation.git master:master"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Release preparation complete.

Ви можете бачити, що він здійснив комісію після перевірки статусу. Не впевнений, що це також ваша проблема, але це спрацювало для мене.

Зауважте, що це означало б, що вам потрібно встановити msysgit


1

Я використовую Git 1.8.x локально і зіткнувся з подібною проблемою:

maven-scm-plugin робить

$ git add
$ git status

але не

$ git commit

Використання іншої машини з Git 1.7.x допомогло мені обійти цю проблему.

Примітка: Я спробував використовувати maven-scm-plugin 1.8.1 або 1.9, maven-release-plugin 2.4.1 або 2.4.2.


мені також допомогло зниження до 1.7.x
CAB

0

Подібна проблема, але у мене виникла така проблема, використовуючи плагін випуску Jenkins та Gitlab:

  • Вперше це спрацювало.
  • Вдруге це не зробить.

Виявляється, у нас була помилка в конфігурації SCM у нашому pom.xml, тому проект з помилкою було створено вперше. Вдруге Мейвен отримував доступ до застарілого проекту і скаржився, не здійснюючи змін.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.