1

注:長い質問なので、本質的には、私の管理下にある既存のプロジェクトの聖化されたリリースをmavenを介してリリースする方法を知りたいです。現在、sonatype とそのプラグインを使用していますが、リリース プラグインでは SHA1 をリリースとしてプッシュできません。既製のソリューションが存在する場合は、以下にリンクされている pom.xml の変更方法を教えていただければ、いつでも採用します。

Ubuntu 12.10、64ビットでIntellij IDEA 12.0.1(コミュニティバージョン)を使用して開発したJavaプロジェクト(GitHubで入手可能で、すでに使用中)があります。インストールされているバージョンmavenは、私のディストリビューション (3.0.4) にバンドルされているものです。

私が抱えている問題pom.xmlは、プロジェクトにあります:

https://raw.github.com/fge/json-schema-validator/master/pom.xml

SonaType のリリース ガイドに従いました。GPG などをセットアップしましたが、すべて正常に動作します。プラグインを使用してリリースできます。プラグインは、次の行によってトリガーされると推測されますpom.xml

<parent>
    <groupId>org.sonatype.oss</groupId>
    <artifactId>oss-parent</artifactId>
    <version>7</version>
</parent>

ただし、このプラグインにはいくつか問題があります (でも、本当にそうなのですか?):

  • 常に接頭辞が付いたガベージコミットを作成しますが、それ[mvn-release-plugin]は望ましくありません。
  • developerConnectionリリースするたびに URIからクローンを作成しますが、率直に言って、git の仕組みを知っている人にとってはばかげています (単純なfetch比較と SHA1 の比較で不一致を検出できます)。 、穏やかに言えば;
  • タグを作成するように求められます。それはしたくありません。自分で作成できます。どうもありがとうございました。
  • リリース コミット メッセージをカスタマイズすることさえできません (そこに短いログを含めたいと思います)。

したがって、リリースの準備ができたら、次の手順を実行します。

  1. HEADと呼ばれるにタグを作成するbefore
  2. git cherry-pickpom.xml必要に応じて同期する、すべての git リポジトリ URI を私のローカル リポジトリに置き換えるコミット (SHA1 を知っています) 。
  3. シェル プロンプトで、プラグインをそのままにして、リリースが「全体」で利用できるようにします。

    mvn release:clean
    mvn release:prepare
    mvn release:perform
    
  4. git rebase before: コミットを取り除き、git URI、squash/reword などを変更して、ガベージ コミットが消え、代わりにリリース メッセージに変更の短いログが含まれるようにします。

  5. 実際のタグを作成します。
  6. github にプッシュします。

もちろん、これは、健全で正気であることを保証する Maven リリースが、Github プロジェクトの同等バージョンの SHA1 と一致しないことを意味します。そして、私はその矛盾を取り除きたいと思います。

では、Sonatype リリース プラグインを動作させるにはどうすればよいでしょうか? つまり、次のように伝えるにはどうすればよいですか。

  • git clonefrom からdeveloperConnectionではなく、ローカルの git リポジトリを信頼します。
  • 無駄なコミットを作成しない、
  • リリース メッセージをカスタマイズできますか?

または、この面倒なプロセスを経ずに済むようにするためのより良い代替手段はありますか?

詳細はオンデマンドで入手可能。

4

1 に答える 1

1

リリース プラグインは「公式」の maven-release-plugin であり、Sonatype の特別なバージョンではありません。 prepare と perform の目標、特に, andについては、ドキュメントを参照してください(ただし、最後の目標が必要なことを実行するかどうかはわかりません)。localCheckoutpushChangessuppressCommitBeforeTag

リリース バージョンに変更してタグを追加することでプロジェクトを手動で準備する場合、(理論上は ;) タグからビルドしてそれらのアーティファクトを OSSRH にプッシュするを省略release:prepareして実行することさえできるかもしれません。release:perform -DlocalCheckout=true

于 2013-01-18T10:27:02.813 に答える