注:長い質問なので、本質的には、私の管理下にある既存のプロジェクトの聖化されたリリースを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 の比較で不一致を検出できます)。 、穏やかに言えば;- タグを作成するように求められます。それはしたくありません。自分で作成できます。どうもありがとうございました。
- リリース コミット メッセージをカスタマイズすることさえできません (そこに短いログを含めたいと思います)。
したがって、リリースの準備ができたら、次の手順を実行します。
HEAD
と呼ばれるにタグを作成するbefore
git cherry-pick
pom.xml
必要に応じて同期する、すべての git リポジトリ URI を私のローカル リポジトリに置き換えるコミット (SHA1 を知っています) 。シェル プロンプトで、プラグインをそのままにして、リリースが「全体」で利用できるようにします。
mvn release:clean mvn release:prepare mvn release:perform
git rebase before
: コミットを取り除き、git URI、squash/reword などを変更して、ガベージ コミットが消え、代わりにリリース メッセージに変更の短いログが含まれるようにします。- 実際のタグを作成します。
- github にプッシュします。
もちろん、これは、健全で正気であることを保証する Maven リリースが、Github プロジェクトの同等バージョンの SHA1 と一致しないことを意味します。そして、私はその矛盾を取り除きたいと思います。
では、Sonatype リリース プラグインを動作させるにはどうすればよいでしょうか? つまり、次のように伝えるにはどうすればよいですか。
git clone
from からdeveloperConnection
ではなく、ローカルの git リポジトリを信頼します。- 無駄なコミットを作成しない、
- リリース メッセージをカスタマイズできますか?
または、この面倒なプロセスを経ずに済むようにするためのより良い代替手段はありますか?
詳細はオンデマンドで入手可能。