3

私の Jenkins ビルドの 1 つで、かなり複雑なビルド ワークフローがあります。プロジェクトには 2 つのモジュールが含まれています。モジュール M1 はサービスを構築し、モジュール M2 はサービス クライアントを構築します。M1 は M2 に依存しています (理由は聞かないでください)。M2 には、M1 の ejb から作成されたスタブが必要です。そのため、次のビルド順序で回避しようとした循環依存関係にあります。

  1. mvn clean install (プロジェクト全体)
  2. mvn package -PCI (M1 jar を含むすべての依存関係を収集するプロファイルを持つ M2 用)
  3. スタブを作成するためにビルド アーティファクトと依存関係を別のマシンにコピーする
  4. スタブを作成する
  5. スタブを含むバージョンで M2 ビルド アーティファクトを上書きする
  6. mvn install:install (M2用)

最終インストールを実行すると、次のように爆発します。

[INFO] [install:install {execution: default-cli}]
[INFO] -------------------------------- ----------------------------------------
[エラー] ビルド エラー
[情報] -- -------------------------------------------------- --------------------
[情報] このプロジェクトのパッケージ化では、ビルド アーティファクトにファイルが割り当てられませんでした
[情報] ---------- -------------------------------------------------- ------------

そこで、私はすでに Jenkins を使用していて、とにかくスナップショット ディレクトリにデプロイしているので、心配する必要はなく、スナップショット リポジトリから新しいバージョンを取得するため、ローカル デプロイを省略できるという考えを思いつきました。その結果、Jenkins はインストールの実行後にジョブのアーティファクトをアーカイブしました。最終インストールを実行しなかったため、スタブのないバージョンがデプロイされました (ステップ 2 からだと思います)。

次に、Maven 統合の自動アーカイブ機能に加えて、ビルド後のオプションを使用してサービス クライアント jar を明示的にアーカイブするように Jenkins ジョブを構成しました。その結果、Jenkins ジョブ用にサービス クライアント jar をアーカイブしました。1 つはプロジェクト レベル (スタブを含む目的のバージョン) で、もう 1 つは M2 (スタブなし) でした。もちろん、スタブなしのバージョンがデプロイされました。

プロジェクト構造を変更せずに、このジレンマから抜け出す方法を教えてください。開発者の要望が満たされる限り、pom ファイルに何かを追加することができます。Jenkins の仕事は私のドメインです。

4

1 に答える 1

0

再編成する必要があるようです。クライアントの server->client 依存関係を別の jar に分解し、クライアントへの依存関係をこの新しい jar への依存関係に変更することは可能ですか?

于 2011-06-28T14:59:59.350 に答える