web-dev-qa-db-ja.com

IntelliJの「すべてのMavenプロジェクトを再インポート」ボタンはどのように機能しますか?

IntelliJの[すべてのMavenプロジェクトを再インポート]ボタンは実際にどのように機能しますか?

IntelliJの再インポートボタンの動作が異なる-U引数を指定してmvnコマンドを実行する動作とは異なることがわかったため、これを求めています。理由はわかりません。 。

15
Johnny

ローカルリポジトリとリモートリポジトリの部分を見逃していると思います。

mvn -Uを実行すると、mavenは、会社のネクサスまたはmavenリポジトリとなるリモートリポジトリからすべてのライブラリをダウンロードするように強制されます。 -Uとの主な違いは、-UがローカルのSNAPSHOTjarをリモートのSNAPSHOTjarでオーバーライドすることです。ローカルのSNAPSHOTjarはinstallから取得され、remoteはdeployコマンドから取得されました。

再輸入との混乱が生じるでしょう。 Reimportは、リモートjarの代わりにローカルjar、特にSNAPSHOTjarをロードします。 Mavenメニューで強制更新スナップショットを有効にできます。これにより、intellijで-Uスイッチが有効になります。

また、システムmavenおよびintellijmavenと同じ.m2ディレクトリを共有していることを再確認してください。これはユーザー設定ファイルで確認でき、コマンドラインMavenと比較できます。 mvn -Xを実行して、設定セクションを確認するだけです。

[DEBUG] Reading global settings from /usr/local/Cellar/maven/3.3.9/libexec/conf/settings.xml
[DEBUG] Reading user settings from /Users/xbaran/.m2/settings.xml
[DEBUG] Reading global toolchains from /usr/local/Cellar/maven/3.3.9/libexec/conf/toolchains.xml
[DEBUG] Reading user toolchains from /Users/xbaran/.m2/toolchains.xml
[DEBUG] Using local repository at /Users/xbaran/.m2/repository

enter image description here


将来の読者のためのアスカーのメモ

この回答は再インポートボタンの動作を完全には説明していなかったので、後世のためにここに私の観察を追加します。

IntelliJのキャッシュ(つまり、.ideaフォルダー)で何かが起こっているようです。ターミナルでmvn clean install -Uを使用すると、ここで説明するように機能しますが、IntelliJIDEには影響しません。欠落しているシンボルは、引き続き欠落していると説明されます。ただし、「魔法の再インポートボタン」を押すと、欠落しているシンボルは正常に解決されます。

再インポートボタンは基本的にIntelliJに自身のキャッシュを更新するように指示していると推測できます。そのため、動作に違いがあります。

15
Milan Baran

Pom.xmlファイルを変更した場合、IDEAはプロジェクト構造を更新する必要があります。たとえば、さらにいくつかの依存関係を追加した場合、IDEAそれらをプロジェクトライブラリとして追加します。

したがって、「Maven> Reimport」は、まさにそのために使用されます-Mavenモジュールを再インポートします。引数を指定してMavenコマンドをトリガーすることはありません。

「ReimportAll」は同じことを行いますが、プロジェクト内のすべてのMavenモジュールに対して行います。

補足として、これら2つのアクションを使用する代わりに、[設定]> [ビルド、実行、デプロイメント]> [ビルドツール]> [Maven]> [インポート]で、[Mavenプロジェクトを自動的にインポートする]を選択できます。これにより、pom.xmlが変更されたときに、「再インポート」アクションが自動的に呼び出されます。

0