IntelliJ的"Reimport All Maven Projects"按钮如何工作?

Joh*_*nny 12 intellij-idea maven intellij-13 intellij-14

IntelliJ的"Reimport All Maven Projects"按钮实际上如何工作?

我问这个是因为我看到IntelliJ的重新导入按钮的行为与使用参数运行命令的行为不同,而且我不清楚为什么.mvn-U

Mil*_*ran 14

我想你错过了本地和远程存储库的部分.

如果你运行mvn -U它强制maven从远程存储库下载所有库,这将是你公司的nexus或maven repo.使用-U和不使用的主要区别是-U将使用远程SNAPSHOT jar覆盖您当地的SNAPSHOT罐子.本地SNAPSHOT jar来自安装,远程来自deploy命令.

重新进口将会出现混乱.重新导入将加载您的本地罐子而不是远程罐子,尤其是SNAPSHOT罐子.您可以在maven菜单中启用强制更新快照,这将启用-Uintellij中的切换.

还要仔细检查您与系统maven和intellij maven共享相同的.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
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


提问者给未来的读者留言

这个答案没有完全解释重新导入按钮的行为,所以我将在这里为后代添加我的观察.

IntelliJ的缓存(即.idea文件夹)似乎正在发生一些事情.mvn clean install -U在终端中使用如此处所述,但不影响IntelliJ IDE; 丢失的符号仍被描述为缺失.但是,如果我按下"魔法重新导入按钮",那些缺失的符号将成功解决.

我只能假设重新导入按钮基本上是指示IntelliJ刷新自己的缓存,这就是行为存在差异的原因.

  • 答案没有完全解释这种行为,但却让我走上了正确的道路.我要把这个答案给予赏金,但我已经添加了我自己的观察结果(等待同行评审) (2认同)