既存のワークスペースでEclipse Photonに移動しました。このワークスペースにはいくつかのMavenプロジェクトがあります。 Eclipse Oxygenでは、すべてのプロジェクトにエラーはありませんでした。 Eclipse Photonでワークスペースを開いた後、インポートするすべてのテストクラスorg.mockito.Mockito
、org.springframework.mock
およびorg.springframework.test
エラーがあります。これらのインポートは、Eclipseがクラスにジャンプできるためそれらを認識しているにもかかわらず解決できません。
Eclipse Photonがこれらのインポートを解決できないのはなぜですか?そして、どうすればこれを修正できますか?
これが本当にMavenプロジェクトであり、一致するm2e-version 1.9を使用している場合、「テストソースを含む」設定と関連設定を自動的に正しく構成する必要があります。
プロジェクトを右クリックし、[Maven]> [プロジェクトの更新]を選択して、プロジェクトのクラスパスを更新する必要がある場合があります。
私はそれを解決し、結果を共有したいと思います。
Eclipse photonのビルドパスプロパティには、ソースタブに新しいオプションがあります:テストソースが含まれています。このオプションは、フォルダーmyproject/src/test/Java
に対してNoに設定されました。 Yesに設定しようとすると、次のエラーが表示されました。
プロジェクト「myproject」のソースフォルダー「src/testjava」には、メインソースにも使用されない出力フォルダーが必要です。
出力フォルダーがmyproject/src/main/Java
のパスとは異なるパスに既に設定されているにもかかわらず、エラーが表示されました。設定をリセットするには、オプションをオフにし、ソースフォルダーの出力フォルダーを許可し、すべての出力フォルダーを再設定します。その後、前述のオプションをYesに設定できました。その結果、インポートは解決されました。
その理由は ここ (そこにスクロールしてソースをテストする)。それは言います:
プロジェクトごとに、コンパイルは2つのフェーズで行われます。最初はすべてのメインソース(ビルドパスにテストコードが表示されない)、次にすべてのテストソースです。
このオプションはtest-source-folderに設定されていないため、main-source-folderのようにコンパイルされました。したがって、スコープtestを持つ依存関係からのテストクラスのインポートを解決できませんでした。
私のMavenベースのプロジェクトでは、プロジェクトの.classpathファイルに移動して追加することで問題を解決できました...
<attribute name="test" value="true"/>
属性へのタグ、つまり
<classpathentry kind="src" output="target/test-classes" path="src/test/Java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
お役に立てば幸いです。