私はラップトップでいくつかの mavenized プロジェクトを開発しており、定期的に github にプッシュしています。私はクラウドにプライベート hudson サーバーをセットアップし、更新のために git リポジトリをポーリングしてビルドを実行しました。
残念ながら、ラップトップで「mvn release:prepare」を実行してリリース (たとえば「1.5」) を実行すると、発生する 2 つのコミット (1.5-SNAPSHOT を 1.5 に変更し、次に 1.5 を 1.6-SNAPSHOT に変更する) が一緒にプッシュされます。私のgitリポジトリ-そしてHudsonは明らかに最新のもの、つまり1.6-SNAPSHOTをビルドし、1.5リリースを完全に無視します。
それほど重要ではありませんが、プロジェクトは互いに依存しているため、pom でスナップショット以外のバージョンを宣言したいと考えています。ただし、プロジェクト B がプロジェクト A のバージョン 1.5 に依存している場合、Hudson ボックスの hudson ユーザーのローカル Maven リポジトリには見つからないため、ビルドされていないため、プロジェクト B のビルドは失敗します。
Hudson をもう少し賢くして、maven リリース バージョンが飛び交うのを確認すると、その特定のバージョンのビルドとインストールを強制してから、後のスナップショット コミットのビルドに進むことができれば素晴らしいと思います。
Hudson プラグイン、特に「M2 リリース プラグイン」を調べてきました。
http://wiki.hudson-ci.org//display/HUDSON/M2+Release+Plugin
-しかし、そのプラグインは、ハドソンに遭遇するすべてのリリースビルドを自動的にビルドおよびインストールするように強制するのではなく、より公式のMaven Repoに昇格させたいビルドを手動で選択することを目的としているようです.
更新: 私の根底にある要件のいくつかにより、ここで達成したいことを再考するようになりました-以前にそれらを表現しなかったことをお詫びします:
- ほとんどのプロジェクトはオープンソースであるか、最終的にはオープンになる予定です。誰もが
git clone
単一のプロジェクトにアクセスし、リリース タグをチェックアウトし、mvn install
依存関係のための他のリポジトリを必要とせずに Maven Central を実行できるようにしたいと考えています。 - (私のラップトップ、hudson サーバー、および他の人のチェックアウト全体で) 一貫した結果を得るために、これは明らかに、私の pom でスナップショット以外の依存関係を宣言することを優先することを示しています (少なくともリリース バージョンの場合)。
- これにより、ハドソンにリリースアーティファクトを「mvn install」させようとする道にたどり着きました。これにより、プロジェクト A のリリースバージョン (この質問はから来ました)
さらに:
- 私は sonotype のすばらしい oss ホスティングを使用していますが、これには GPG 署名が必要です。また、手に持てないハードウェアに GPG キーを保存したくありません :)オプションではありません。
- 精神的には、Hudson サーバーにリリースをさせることは、私には少しなじみがありません。私は本当に CI のためにそれを望んでいます。