web-dev-qa-db-ja.com

mvn release:pom.xmlへの変更をコミットしない準備

MavenでJenkinsプラグイン( stashNotifier )をリリースしようとしていますが、リリースプラグインの問題に直面しています。

mvn clean release:prepare

エラーなしで完了まで実行されますが、ローカルgitリポジトリで変更されたpom.xmlをコミットできません。バージョン1.0.2をリリースしようとしているブランチのHEADをタグ付けします。これは、リリースを準備する前のローカルブランチの外観です。

* 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にはすでに次の開発バージョンが含まれており、これにより、後続のrelease:performがそのスナップショットバージョンをリリースします。

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>

何が間違っていますか?洞察力を事前に感謝します!

76
BumbleGee

リリースプラグインのバージョンではなく、git scmプロバイダーの依存関係を更新することで、(maven 3.0.5を実行している)側の問題を解決しました。

<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の異なるバージョンが環境によって必要になる場合があります。詳細については、コメントを参照してください。

92
richnou

私は同じ問題にぶつかりました。#richnouによる解決策が私にとっては有効です(SCM依存関係のアップグレード)。この問題で作成された問題があります。以下のリンクをご覧ください。この問題は、プラグインが解析できないローカライズされたメッセージを「git status」が返すGitの新しいバージョンに関連しています。それが根本的な原因です。この問題はgit scm(1.8.1バージョン)でgitの--porcelainオプション(簡単に解析可能な出力を返すはずです)を使用して修正されましたが、この修正後、別の問題が発生しました-リポジトリルート(scmタグ)が作業ディレクトリではなく、release:prepareは引き続き失敗します。この問題は、Git SCMのスナップショットバージョン(まだリリースされていない)で修正されているようです。これは、scmタグを子pomにコピーすることで回避できます。

MRELEASE-812

SCM-709

maven-release-plugin-and-git-fix

16
vasekt

上記の解決策が役に立たなかったので、おそらくこれを読んでいるでしょう。私は同じ問題を抱えていて、ここで言及したすべてを試しました。私のバージョンは:maven-release-plugin 2.5およびgit 1.7.9

私にとってworkedというソリューションはdowngrading maven-release-plugin to 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>
9
Iulian Ghionoiu

最初に、richnouとvasektからの回答が私の問題を解決しました。言及されたよりも新しいバージョンのためだけにこの回答を投稿したいと思ったので、それらを含む余分な例を挙げておくと良いと思いました。

私は、Maven scm依存バージョンを指定せずにGit 3.3.xでmavenリリースプラグイン2.3.2を実行していたため、スナップショットの問題が発生していました。私にとっては、次のような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>

これはうまく機能し、リリースバージョンはリリースリポジトリに適切にアップロードされ、スナップショットも期待どおりに機能しました。

7
Jeremy

maven-release-pluginを2.5.2にアップグレードすると助けになりました(2.5にアップグレードしても機能しませんでした。一部のユーザーでは機能しますが、システム上の他の新しいソフトウェアによっては機能しません)。新しいプロバイダーを自動的に取り込むと思います。

4
mirabilos

私はちょうどこの同じ問題に出くわし、他の回答とコメントから、リリースプラグイン自体のバグである可能性が高いと考えました。

私の場合、次のように構成された新しくてほとんど空のプロジェクトでgitとともにプラグインのバージョン2.4を使用していました。

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がそれを解決しているように見えました。

それが実際にwas問題であるかどうかはわかりませんが、私のプロジェクトをプラグインの2.4.1にアップグレードすると解決しました。それもあなたのために問題を解決することを願っています!

1
Karl M. Davis

私は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
Lukas Fryc

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をインストールする必要があることを意味することに注意してください

1
Lucas

同様の問題ですが、JenkinsリリースプラグインとGitlabを使用してこの問題が発生しました。

  • 初めて働いた。
  • 2回目はコミットしません。

Pom.xmlのSCM configにタイプミスがあったため、タイプミスのプロジェクトが初めて作成されました。 2度目に、Mavenは変更をコミットせずに、古いプロジェクトにアクセスして不満を言っていました。

0
exic