1

m2e プラグインで eclipse Kepler を使用しており、maven プロジェクトを変更してコンパイルしたいと考えています。最初に で Maven プロジェクトに変換しましたConfigure -> Convert to maven projectが、まだ多くのインポートが不足していました。プロジェクトを使用Run as... -> Maven installするとコンパイルされます。

不足しているインポートを修正するにはどうすればよいですか?

4

1 に答える 1

2

プロジェクトを更新するように m2e に指示します: プロジェクトのコンテキスト メニュー / Maven / プロジェクトの更新...

その後、m2e は POM を再度読み取り、クラスパスを更新して、プロジェクトを再度ビルドします。

.classpathファイルにこれがあることを確認してください:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
    </attributes>
</classpathentry>

注: 実際の構文は、使用する m2e バージョンによって若干異なる場合があります。

もう 1 つの一般的な落とし穴はスコープprovidedです。

provided
これは によく似compileていますが、JDK またはコンテナーが実行時に依存関係を提供することを期待していることを示しています。たとえば、Java Enterprise Edition 用の Web アプリケーションを構築する場合、サーブレット API および関連する Java EE API への依存関係を提供範囲に設定します。これは、Web コンテナーがこれらのクラスを提供するためです。このスコープは、コンパイルおよびテスト クラスパスでのみ使用でき、推移的ではありません。

最後の部分に注意してください。not transitive

これは、「I need X:Y:Z, scope provided」というPOM Aに依存していることを意味します。プロジェクトにはこの依存関係が表示されますが、クラスパスにはまったくありません。

これを修正するには、依存関係を同じスコープ ( provided) でプロジェクトにコピーします。

于 2013-08-26T13:45:13.487 に答える