1

同じワークスペースで Eclipse にインポートされた 2 つの Maven プロジェクトがあります。両方とも同じ名前とパッケージのクラスを持っていますが、実装が異なり、各プロジェクトの異なる場所にあります。このクラスを呼び出しましょうcom.namespace.Factory

プロジェクト A の test フォルダーの下に Factory があります。つまり、次のようになります。/src/test/java/com/namespace/Factory.java

プロジェクト B には、メイン ソース フォルダーの下に Factory があります。つまり、次のようになります。/src/main/java/com/namespace/Factory.java

両方に依存する Project C もあります。プロジェクト C も、一部の単体テストにプロジェクト B の Factory を使用します。問題は、2 つの Factory クラスを区別できないため、Eclipse が Project C をコンパイルできないことです。コマンドラインですべてのプロジェクトをビルドすると、問題はありません。

Project A Factory クラスはテスト中であるため、Eclipse はそれを無視すると思われるかもしれません。

m2e プラグインを使用しています。私の現在の回避策は、ワークスペース内のプロジェクト C の依存関係を解決しないように m2e をセットアップすることです。これにより、テストが含まれないjarが強制的にダウンロードされます。ただし、これは A または B のいずれかに変更があることを意味します。A または B を手動でインストールし、最新の jar をローカル リポジトリにプッシュし、プロジェクト C の依存関係を更新して最新の jar をプルダウンする必要があります。

プロジェクト A のテスト フォルダーをプロジェクト C のビルド パスから除外して、ワークスペース内のすべてを引き続き解決できるようにする方法はありますか? Eclipse は、Maven プロジェクトの基礎となる何かを壊しているように感じます。

4

2 に答える 2

2

あなたは上流のバグの影響を受けた別のユーザーだと思います: https://bugs.eclipse.org/bugs/show_bug.cgi?id=376616

要約すると、バグ レポートの議論には以下が含まれます。

JDT は、Eclipse プロジェクトごとにビルドパスを 1 つだけ実装します。これは基本的な設計上の選択であり、多くの API と実装の詳細がそれに依存しているため、変更される可能性はほとんどありません。

ええと、それはあなたの質問に本当に答えていないと思います。したがって、プロジェクトにどれだけの影響力を与えるかによって、ここに複数の選択肢があります。

  • いずれかのクラスの名前を変更してみてください => 名前は一意になります
  • または、クラスに基本的に同じ機能が含まれている場合、プロジェクト間の依存関係を試したり、他の2つが依存する新しいプロジェクトを作成したりします
  • それが今私の頭に浮かんだことのほとんどです
于 2013-03-30T20:27:29.517 に答える