16

Jenkins と Maven 3 のセットアップ方法に関する簡単な質問のように思われるものがあります。

簡単にするために、4 つのプロジェクトがあるとしましょう。

依存関係のないモデル
Commonsに依存する Commonsは、Common に依存する Model
Serverと、Model に依存する Model
Frontendに依存します

私が達成したいのは、Model のビルドが成功すると、pom で Model に依存するすべてのプロジェクト (ここでは Common、Server、および Frontend) で新しいビルドがトリガーされることです。

Common が失敗した場合、サーバーを構築する必要はありません。

上記の場合、モデルとコモンズで依存プロジェクトを手動で設定することでこれを修正できるようですが、この情報は各プロジェクト (サーバーとフロントエンド) の pom ファイルで既に見つけることができるため、Jenkins が自分でこれを理解することができます。

Jenkins は、Jenkins で定義された各プロジェクトの pom を解析して依存関係ツリーを推測し、ある種の最適なビルド順序/依存関係処理を自動的に行うことができますか、または「上流のプロジェクトがビルドされているときにビルドをブロックする」および「他のプロジェクトがビルドされた後にビルドする」を設定する必要がありますか?上記のようにビルドされた[依存プロジェクトのリスト]」?

Jenkins バージョン 1.473 と Maven 3 を使用しています。Maven
プロジェクトの pom は親またはモジュール タグを使用しません。

/ベンジャミン

4

3 に答える 3

8

マルチモジュール ビルドではなく 4 つの個別のビルドに固執する場合、その方法は 4 つのプロジェクトのそれぞれで、ビルド トリガーの下のボックスをオンにすることです。

「SNAPSHOT 依存関係が構築されるたびに構築する」

次に、Model にチェックインすると、jenkins は SVN ポーリングに基づいてそのプロジェクトのビルドを開始します。ビルドが完了すると、common が model に依存していることがわかるため、common のビルドをトリガーして、それがまだビルドされているかどうかを確認します。更新されたモデル。

このオプションを表示するには、jenkins ジョブを maven ジョブとして作成する必要があります。たまたま maven を呼び出すスクリプトを実行する場合でも、フリー スタイルのプロジェクトには適用されません。

于 2013-08-08T22:11:16.930 に答える
4

このような場合の最善の解決策は、次の構造になるマルチモジュール ビルドを作成することです。

root (pom.xml)
  +--- model (pom.xml)
  +--- commons (pom.xml)
  +--- server (pom.xml)
  +--- frontend (pom.xml)

たとえばコモンズの各モジュールでは、モデルモジュールなどへの依存関係を定義します。ビルド順序はmavenによって自動的に行われます。

このような種類のプロジェクトでは、ルートに移動して次のことを実行できます。

mvn clean package

以下も使用できます。

mvn --pl --am server

これにより、サーバーだけでなく、依存するすべてのモジュールも自動的に構築されます。

于 2012-08-29T09:31:58.290 に答える
3

2 つのソリューション。

  1. ビルド順序のみを宣言する他のプロジェクト (モデル、コモンズ、サーバー、およびフロントエンド) の上にモジュール pom を作成します。そして、このプロジェクトをJenkinsにインストールするだけです

  2. 各ジョブには、「何がビルドをトリガーしているか」という形式で有効にするチェックボックスがあります --> プロジェクトの後にビルドします。(私の Jenkins はフランス語で設定されているため、オプションの名前はおそらく私が書いたものとは正確ではありません...)

于 2012-08-29T09:04:30.277 に答える