mvn release: подготовьте не вносить изменения в pom.xml

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

mvn clean release:prepare

выполняется до завершения без ошибок, но не может зафиксировать измененный файл pom.xml в моем локальном репозитории git. Даже при том, что это действительно помечает ГОЛОВУ ветви, на которой я пытаюсь выпустить версию 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 [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.

Я использую maven 3.0.5 (без --dry-run или -DpushChanges = false). Вот соответствующие (я думаю) части моего эффективного 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>

Что я делаю не так? Заранее спасибо за ваши идеи!

72 голоса | спросил BumbleGee 2 MaramSat, 02 Mar 2013 00:58:35 +04002013-03-02T00:58:35+04:0012 2013, 00:58:35

9 ответов


0

Я решил проблему со своей стороны (запустил 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. Смотрите комментарии для дальнейшего обсуждения.

ответил richnou 18 WedEurope/Moscow2013-12-18T16:03:47+04:00Europe/Moscow12bEurope/MoscowWed, 18 Dec 2013 16:03:47 +0400 2013, 16:03:47
0

Я столкнулся с той же проблемой, у меня работает решение #richnou (обновление зависимости SCM). Существует проблема, созданная по этой проблеме, см. Ссылку ниже. Проблема связана с новой версией Git, где «git status» возвращает локализованные сообщения, которые плагин не может проанализировать. Это коренная причина. Эта проблема была исправлена ​​в git scm (версия 1.8.1) с помощью опции --porcelain в git (которая должна возвращать легко разбираемый вывод), но после этого исправления возникла другая проблема - если корень хранилища (тег scm) не является рабочим каталогом, release:prepare все еще не работает. Эта проблема, кажется, исправлена ​​в версии Git SCM с моментальным снимком (еще не выпущена). Это можно обойти, скопировав тег scm в дочерний pom.

MRELEASE-812

SCM-709

maven-release-plugin и-ГИТ-фикс

ответил vasekt 3 Jpm1000000pmFri, 03 Jan 2014 15:40:12 +040014 2014, 15:40:12
0

Вы, вероятно, читаете это, потому что вышеуказанные решения не сработали для вас. У меня была такая же проблема, и я попробовал все, что здесь упоминалось. Мои версии были: 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>
ответил Iulian Ghionoiu 25 MaramTue, 25 Mar 2014 01:03:12 +04002014-03-25T01:03:12+04:0001 2014, 01:03:12
0

Во-первых, ответы от 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>

Для меня это работало нормально, версии выпусков были правильно загружены в репозиторий релизов, а моментальный снимок также работал должным образом.

ответил Jeremy 21 MaramTue, 21 Mar 2017 01:48:10 +03002017-03-21T01:48:10+03:0001 2017, 01:48:10
0

Помогло обновление maven-release-plugin до 2.5.2 (обновление до 2.5 не помогло; это работает для некоторых людей, но не для всех, возможно, в зависимости от другого более нового программного обеспечения в системе). Я полагаю, что это автоматически вытягивает нового провайдера.

ответил mirabilos 30 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 30 Sep 2015 11:03:20 +0300 2015, 11:03:20
0

Я только что столкнулся с этой же проблемой, и, судя по другим ответам и комментариям, это, скорее всего, ошибка в самом плагине релиза.

В моем случае я использовал плагин версии 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 плагина решило его для меня . Надеюсь, это решит проблему и для вас!

ответил Karl M. Davis 1 AMpMon, 01 Apr 2013 09:06:35 +040006Monday 2013, 09:06:35
0

Я столкнулся с той же проблемой при использовании 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 [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.

Как видите, ошибок нет, просто не зафиксировал после проверки статуса. Однако, когда я бежал из командной строки 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.

Вы можете видеть, что он зафиксировал после проверки статуса. Не уверен, что это ваша проблема, но она сработала для меня.

Обратите внимание, что это означает, что вам нужно установить msysgit

ответил Lucas 26 +04002013-10-26T00:18:58+04:00312013bEurope/MoscowSat, 26 Oct 2013 00:18:58 +0400 2013, 00:18:58
0

Я использую 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.

ответил Lukas Fryc 31 Jam1000000amFri, 31 Jan 2014 01:13:35 +040014 2014, 01:13:35
0

Схожая проблема, но у меня была эта проблема с использованием Jenkins Release Plugin и Gitlab:

  • Первый раз это сработало.
  • Второй раз это не будет зафиксировано.

Оказывается, в нашем файле pom.xml была опечатка в конфигурации SCM, поэтому проект с опечаткой был создан в первый раз. Во второй раз Maven получал доступ к устаревшему проекту и жаловался, не внося изменения.

ответил exic 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 10 Sep 2018 14:39:25 +0300 2018, 14:39:25

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132