2

モジュール B がモジュール A に依存するマルチモジュール Maven プロジェクトがあります。モジュール B を再構築するたびにモジュール A を再構築するにはどうすればよいですか? 現在、モジュール B で何かを行う前に、モジュール A を手動でインストールする必要があり、それは本当に面倒です。

PS私は他の誰かが同様の未回答の質問をしたのを見ます: Maven:インストールする必要なく、マルチモジュールMavenプロジェクトでjetty:runを使用する方法

4

2 に答える 2

1

これは2つの方法で解決されます。まず、BのPOMにはAの<dependency>を含める必要があります。Bのビルド時にAがリポジトリにある限り、正しいバージョンを取得します。

AがBの前にビルドされるようにするには、Mavenリアクターがこの依存関係について知る必要があります。これは、<module>要素を使用したマルチモジュールビルドで行われます。トップレベルのPOMは<packaging>pom</ packages>に設定されており、2つの<module>要素があります。1つはA用、もう1つはB用です。リストされている順序や深さは関係ありません。ソースプロジェクトから到達可能である場合、それらは正しい順序でビルドされます。

Bを構築して、MavenリアクターにAのソースを見つけて確認させる方法はないことに注意してください。リアクターには常にソースプロジェクトが必要であり、AとBの両方を<module>要素のグラフから見つける必要があります。これは、Bのビルドは、Aのリポジトリアーティファクトが最新であるかどうかを判断できないため、Aのビルドを実行して、それを把握させる必要があるためです。また、同時にそうするためには、ここで説明する両方を含む親プロジェクトが、ビルドされるソースプロジェクトである必要があります。

また、この種のマルチモジュールプロジェクトではMavenはAntよりも低速ではありませんが、MavenプロジェクトをIDEにインポートすると、通常、Maven自体が実行できるよりもはるかに高速なビルドが得られます。

于 2010-12-07T03:18:22.937 に答える
0

m2eclipseを使用してEclipseIDEで作業すると、コンパイル時およびMaven起動構成でワークスペースの依存関係管理を有効にできます。この場合、Mavenローカルリポジトリのjarの代わりに、依存プロジェクトのコンパイル済みクラスが使用されます。これは、カスタマイズされたjarパッケージなしの通常のプロジェクトで機能します。

当然、コマンドラインでは、各プロジェクトをビルドしてインストールするか、reactorプロジェクトを使用して両方のプロジェクトを一度にビルドしますが、IDEでの作業よりもはるかに便利ではありません。

于 2010-12-07T03:18:45.757 に答える