web-dev-qa-db-ja.com

pom.xmlファイルの依存関係を変更したときに、Eclipse-Mavenプロジェクトでクラスパスを自動的に更新するにはどうすればよいですか?

Eclipse MarsとMaven(v 3.3)を使用しています。 pomの依存関係を更新する(バージョンを変更する)と、プロジェクトを右クリックして[Maven]-> [Update Project]を選択しても、Eclipse-Mavenプロジェクトはそれを選択しません。 Eclipseでコンパイルエラーが表示されないJavaコマンドラインでプロジェクトをビルドするときに表示されるJava $ ===

mvn clean install

ワークスペースからプロジェクトを削除して再インポートすると、正常に戻ります。ただし、これは面倒なプロセスです。 Maven-Eclipseプロジェクトを取得して、pomの変更を自動的に検出し、プロジェクトライブラリを適切に更新するにはどうすればよいですか?

はい、「プロジェクト」メニューで「自動的にビルド」がチェックされています。

12
Dave

プロジェクトをEclipseにインポートするときは、Eclipse独自の組み込みMavenサポート(別名、m2e)を使用します。 mvn Eclipse:eclipseを使用しないことをお勧めします。これは、最良の結果が得られないためです(ご覧のとおり)。 MavenはIDEではなく、ビルドおよび依存関係管理ツールです。私の意見では、IDE固有のものを管理することを期待するのは馬鹿げています(Mavenチームは、MavenがIDEの管理を担当するべきだと違う考えを持っていますが、それはナンセンスです)。

システムでプロジェクトを使用できる場合は、Eclipse固有のファイル(通常は.classpath.project、およびフォルダー.settingsのみ)を削除します。これらはmvn Eclipse:eclipseによって生成されましたまた、ここで説明する「適切な」インポートプロセスの妨げにはなりません。次に、Eclipse内で、ファイル>インポート> Maven>既存のMavenプロジェクトを使用してプロジェクトをインポートします。これにより、pomが変更されたときにEclipseビルドパスを自動的に更新するなど、Eclipseとmavenの統合が改善されます。

簡単なチェックとして、その方法でインポートを実行した後、プロジェクトのビルドパスの[ライブラリ]タブ(プロパティ)にMaven Dependenciesというグループが表示されます。ダイアログ)。このような:

enter image description here

Eclipseプロジェクトの構成を、pomが変更されるたびに自動的に更新したい場合、Preferences>Maven。ただし、 この機能リクエスト で説明したように、Eclipseプロジェクトの多くの要素に触れる長いプロセスであることに注意してください。 pom.xmlの変更ごとに自動的にそれを行うと、それが価値以上のトラブルになる可能性があります。

enter image description here

23
E-Riz

クラスパスの自動更新のために行う必要がある3つの必須チェック

  1. リポジトリがEclipse IDEと同期していません。IDEで以下の設定を確認してください。 External Maven
  2. IDEから任意のPOM.xmlを右クリックし、自動アクティブ化されるMavenプロファイルを確認します。また、オフラインおよび強制更新チェックボックスは有効になりません。以下の画像を参照してください。 . autoactivated
  3. 次の図に示すように、ローカルのmaven settings.xmlを反映するユーザー設定を常に確認してください。 enter image description here
  4. これらのすべてのチェックを実行した後、Eclipseワークスペースを更新して、これらの変更を反映させます。
5

Eclipseはクラスパスを更新する必要があります。そうでない場合、それは何かが間違っていることを意味します。

プロジェクトのpom.xmlについて詳しく知らなくても、問題が何であるかを正確に言うことは困難です。この問題を解決するには詳細な情報が必要な場合がありますが、暗闇の中で突き刺すだけです。

プロジェクトのルートフォルダーにある.projectファイルを開き、そこにあるビルダーと性質の順序を確認します。プロジェクトのその他の性質によってmaven2Natureが失敗する可能性もあります。 Mavenの性質を上げて、それが役立つかどうかを確認します。

あるいは、思考は、Eclipseが依存関係を更新しないということです。これは、新しい依存関係があるはずのエラーインジケーターをプロジェクトに追加しないためです。その場合は、現在のプロジェクトのクリーニングを試してください(project> clean ...)。 EclipseのMavenは、依存関係が更新されたときに必ずしも完全な再構築をトリガーするとは限りません。

これらのいずれも機能しない場合、プロジェクトを閉じたり開いたりすると、再インポートよりも迅速に問題を解決できる場合があります。

0
Teemu Ilmonen

あなたが書いたものは、動作するはずです。これを確認しましたか:

  • ターミナルからの「純粋」mvn installはPOMの変更を確認しますか?

  • 多分いくつかのプラグインはバグがあり、いくつかの依存関係をtargetにキャッシュし、mvn clean installが必要です

  • 新しいワークスペースでEclipseを実行し、そこにプロジェクトをインポートできます。そのような奇妙な問題の場合に役立つことがあります

  • m2Eclipseを介してEclipseにMavenプロジェクトをインポートする代わりに、古いmvn Eclipse:eclipseを介してEclipseファイルを作成して、次に何が起こるかを確認できます。

  • mavenプロジェクトを他のIDE(無料のIntelliJ Community Editionなど)にインポートしようとすると、うまく機能しますか?

0
iirekm