25

現在、私は2つのEclipseプロジェクトを持っています。どちらもjar依存性の良さのためにMaven2を使用しています。

Eclipse内では、プロジェクトFooをプロジェクトバーのビルドパスに含めているので、プロジェクトバーからFooのクラスを使用できます。これはEclipseランドでは非常にうまく機能しますが、試してみると次のようになります。

mvn compile 

Barのディレクトリ内では、MavenがEclipseのビルドパスのプロジェクト間の関係を認識していないため、失敗します。

Antを使用している場合は、foo.jarをプロジェクトBarのクラスパスにコピーするようなばかげたことをするために使用しますが、私が知る限り、Mavenランドでは物事はそれほどハックされていません。

このタイプの問題には標準的な回避策があるかどうか疑問に思っています。これはかなり一般的なことのようですが、Mavenの動作に関する基本的なことを見逃しているだけです。

4

7 に答える 7

21

おそらく、Eclipse の configure-> build path のみを介して他のプロジェクトを参照している可能性があります。これは、プロジェクトのビルドに Eclipse を使用している限り機能します。

最初mvn installにプロジェクト Bar で実行してみて (Bar を Maven リポジトリに配置するため)、次に依存関係を Foo の pom.xml に追加します。

それはうまくいくはずです!

于 2008-09-25T21:48:54.533 に答える
9

m2eclipseプラグインをチェックしてください。pom を変更すると、プロジェクトのビルド パスが自動的かつ動的に更新されます。実行する必要はありませんmvn eclipse:eclipse

プラグインは、依存関係が同じワークスペースにあるかどうかも検出し、そのプロジェクトをビルド パスに追加します。

理想的には、m2eclipse を使用する場合、プロジェクトのビルド パスを手動で変更することは決してありません。代わりに常に pom.xml を編集します。これが適切な方法です。

前に述べたように、Maven は Eclipse プロジェクトのビルド パスを認識しません。すべての依存関係を pom に追加する必要があり、最初にmvn install.

単一のコマンドで両方のプロジェクトをビルドしたい場合は、プロジェクトの集約が興味深いかもしれません。

于 2008-09-25T22:53:20.323 に答える
2

親 Maven プロジェクトと 2 つの子プロジェクトがある別のアプローチを試してみることをお勧めします。まあ言ってみれば:

親 (pom.xml には両方の子プロジェクト/モジュールへの参照があります) --> A (B に依存) --> B

親のルートから mvn eclipse:eclipse を実行すると、maven は A と B の Eclipse プロジェクトを生成し、A のクラスパスに必要なプロジェクトとして B が含まれます。

親のルートから mvn install を実行して、両方のプロジェクトをコンパイルできます。

セットアップを完了するには、A と B の両方を Eclipse にインポートする必要があります。「プロジェクトをワークスペースにコピーする」をチェックしないようにしてください。

于 2008-09-26T03:03:55.367 に答える
1

これを処理する最善の方法は、Bar を Foo と同じように Maven プロジェクトにmvn installして、ローカルの Maven リポジトリで利用できるようにすることだと思います。欠点は、Bar に加えた変更を Maven に表示させるたびに、そのプロジェクトをインストールする必要があることです。

于 2008-09-25T21:48:17.060 に答える
1

完全な答えではありません:
Maven を使用してコンパイルするには、Bar の pom に Foo を含める必要があります。
私もこの質問に興味がありますが、eclipseにmavenが追加された依存関係を認識させる方法の観点からは、実際には同じワークスペース内の別のプロジェクトです。現在、実行後にビルドパスを変更していますmvn eclipse:eclipse

于 2008-09-25T21:50:25.230 に答える