1

あまり良いタイトルではないので、説明してみます。

これは何ヶ月も機能していましたが、今日、なんらかの理由で、Eclipse は兄弟 (ピア プロジェクト) からのインポートを解決できませんが、何も変更されていません (本当に!)。Eclipse または Eclipse プラグインの更新、ソース コードの変更、構成の変更はありません。

私はかなり標準的なプロジェクト構造を持っています:

親プロジェクト
--clild_project_a
---- pom.xml
--clild_project_b
---- pom.xml
-- child_project_c
---- pom.xml
-- pom.xml (親用)。

これで、プロジェクト a と b の両方が c のコードに依存します。

pom.xml を投影します。

  <parent>
    <artifactId>parent_project</artifactId>
    <groupId>com.mydomain.ge</groupId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  ...
  <dependencies>  
    <dependency>
        <groupId>com.mydomain.ge</groupId>
        <artifactId>child_project_c</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
  </dependencies>

そして、親 pom.xml で:

  <modules>
    <module>child_project_a</module>
    <module>child_project_b</module>
    <module>child_project_c</module>
  </modules>

したがって、Eclipse では、たとえばプロジェクト A のすべてのインポート ステートメントがプロジェクト c からインポートされます。

package com.skillkash.ge.api;
import com.skillkash.ge.dao.AlreadyExistsException;

これは与える:

The import com.skillkash.ge.dao.AlreadyExistsException cannot be resolved.

私は次のことを試しました:

  • Maven clean を実行します (すべての子と親で右クリック -> run as -> maven clen を使用)。
  • すべてのプロジェクトで Maven の更新依存関係を実行する
  • 各プロジェクトでmavenパッケージを実行しています。
  • すべてのプロジェクトでm2 maven->「プロジェクト構成の更新」を実行します。
  • 日食を再開します。
  • コンピューターを再起動します。

注1、Eclipseには、子ごとに1つ、親用に1つずつ、合計4つの個別のプロジェクトがあります。3 つの子プロジェクトも SVN にチェックインされますが、その下に子プロジェクト フォルダーがあるため、親プロジェクトを簡単にチェックインできません。
注2、私はantについてよく知っていますが、Mavenの初心者ですが、今まで問題はありませんでした。たとえば、Maven が依存プロジェクトのソースを使用するように Eclipse に指示しているかどうか、またはローカルの m2 リポジトリに常に jar をコンパイルする必要があり、依存プロジェクトがそれを使用するかどうかはわかりません。
注 3、他のすべての (外部) 依存関係は問題ありません。
注4、「ワークスペースプロジェクトからの依存関係を解決する」がチェックされていることを確認しました。
注 5、Eclipse Java ビルド パス ダイアログで、それが依存しているピア プロジェクトが「ソース」、「プロジェクト」、または「ライブラリ」タブのいずれにも表示されないようです。ライブラリには「maven depedencies」サブツリーがありますが、その下には log4j のような外部 jar があります。

4

3 に答える 3

1

mvn clean installEclipse ではなく、コマンド ラインから親 pom でa を実行すると機能しますか? これにより、次の 2 つのことが除外されます。

  1. 日食の問題かどうか
  2. packageあなたの問題が代わりに使用することに関係しているかどうかinstall

maven パッケージのゴールを使用していることに気付きました。一般に、ローカル マシンで作業するmvm clean install代わりに、常に実行する必要があります。mvn clean packageinstall ゴールを使用しない場合、プロジェクト C はローカル リポジトリ (デフォルトでは $HOME/.m2/repository または Windows の同等のリポジトリ) にインストールされないため、プロジェクト A から参照することはできません。とB.

それができない場合は、$HOME/.m2/repository 内に移動し、プロジェクト c の実際にインストールされている .jar/.pom を確認します。そのディレクトリ パスは、その Maven 座標に対応します (例: com/mydomain/ge/child_project_c/0.0.1-SNAPSHOT)。jar に必要なクラスが含まれていることを確認し、その横にインストールされている pom がソース リポジトリのものと同じであることを確認します。

于 2010-08-13T13:31:58.357 に答える
0

まだコメントはできませんが、m2eclipseがワークスペースプロジェクトをローカルリポジトリにインストールしてそこから解決するのではなく、解決するべきではありませんか?

于 2010-10-14T14:40:20.207 に答える
0

build.propertiesmvn は!内に書かれている内容についてかなりうるさいことがわかりました。私は同じ問題に直面し、それを世話しなければなりませんでした

  1. source.. = src/との両方output.. = bin/が正しく入力されています。
  2. bin.includes = META-INF,/.正しく入力されています。

これを修正した後、mvn clean install は魅力的に機能しました! @whaley、ヒントをありがとう、$HOME/.m2/repository実際に、前述の理由により、ファイルが実際にjarファイルにないことを確認できました!

于 2013-07-01T11:43:44.727 に答える