在IntelliJ IDEA中导入Maven依赖

235

我刚把一个从Subversion迁移到IntelliJ IDEA 11的Maven项目导入,但是我遇到了一个Maven库依赖的问题,因此我无法自动包含所有Maven依赖项-只有在打开那个类时,IDEA才会显示依赖项错误。这就是我的情况:

enter image description here

所以我想要自动添加所有依赖项-这可能吗?还是我必须浏览所有类文件以识别并添加Maven依赖项?!

更新:做了一些修改后,我找到了某种方式解决我的问题。这是我所做的: enter image description here

但我认为从逻辑上讲它将不会提前包含和检查新的依赖项?!...在intelliJ中是否有任何设置区域-自动将依赖项导出到classpath中?


9
它会下载所有依赖项,但似乎没有将它们全部添加到类路径中... - Zaur Guliyev
3
另一个问题是,只有当我打开那个Java文件时,IntelliJ 才会显示红色下划线错误。 - Zaur Guliyev
4
如果您有一个带有分类器的SNAPSHOT依赖项,并且存在没有分类器的较新版本的依赖项,则会出现这条红线。在Maven中,这是完全合法的,但是IntelliJ会在尝试计算本地Maven存储库中物理文件的路径时感到困惑。 - RCross
4
FYI,这在15.0.2中仍然可能发生。我刚经历了这个问题。不得不删除我的.iml文件和.idea文件夹并重新导入。非常令人沮丧,因为我花了2个小时来解决它,并最终失去了所有精心制作的运行配置。 - Kevin Pauli
3
@KevinPauli 不需要删除 IDEA 项目文件,你可以在 "Maven Projects" 标签下执行 "Reimport All Maven Projects" 来进行手动重新导入。请注意保持原意并尽可能通俗易懂。 - Zaur Guliyev
显示剩余6条评论
41个回答

321

只要您的POM符合规范且所有依赖项可用,IntelliJ应该会自动下载并将所有依赖项添加到项目的类路径中。

在将Maven项目导入IntelliJ时,通常会弹出一个信息框,询问您是否要为Maven项目配置“自动导入”。这意味着如果您对POM进行任何更改,这些更改将自动加载。

您可以通过转到“文件” > “设置” > “Maven” > “导入”来启用此功能,然后勾选“自动导入Maven项目”的复选框。

如果这没有帮助,那么我建议您进行完全清理并重新开始:

  • 关闭您的项目窗口(和IntelliJ),删除所有*.iml文件和所有.idea文件夹(每个模块应该有一个)
  • 从命令行运行mvn clean install
  • 重新将项目导入IntelliJ,并注意当它询问您是否要启用自动导入时

IntelliJ 2016更新

在您的IntelliJ首选项中,自动导入Maven项目设置已移至构建、执行、部署 > 构建工具 > Maven > 导入


1
这是一个终极版,但我导入的项目是在Eclipse上构建的 - 所以.classpath在那里启用了,但IntelliJ使用.iml - 因此,如果该项目以前没有.iml文件,包含这些库第一次出现是很合理的.. ?! - Zaur Guliyev
1
哦,好的 - 你尝试过将其作为Maven项目导入而不是Eclipse项目吗?当我使用Maven项目时,我习惯于不将与IDE相关的文件检入我的源代码库:如果它是一个Maven项目,那么就遵循Maven规则。 - Alonso Dominguez
2
您可以在首选项/设置中启用自动导入。打开首选项/设置并搜索“自动导入Maven项目”。它位于Build,Execution,Deployment> Build Tools> Maven>导入下。 - artronics
3
不足为奇,因为这是2012年的答案。设置仍然存在,只是已经移到其他地方了(答案已更新)。 - Alonso Dominguez
对于基于Windows的安装,除了mvn clean之外,我还必须手动将Maven插件重新指向Maven安装文件夹。这可以通过在Intellij中选择Maven窗口并选择选项来实现。每次在pom中添加新的依赖项后,我都需要这样做。 - Kabeer Ahmed
显示剩余7条评论

77

修复IntelliJ 14之前的版本

文件 [菜单] -> 设置 -> maven -> 导入 和 取消选中 "使用maven3导入项目"

参考: http://youtrack.jetbrains.com/issue/IDEA-98425 (可能还有其他一些想法)

修复IntelliJ 15+

这次使用IntelliJ 15时又遇到了这个问题,因为IntelliJ有时会“无法正确解析maven依赖项”,如果它无法正确解析其中的一个依赖项,则似乎就放弃了所有依赖项。 您可以通过打开maven项目工具窗口(查看菜单-> 工具窗口-> Maven项目)并展开您的一个maven项目及其依赖关系来判断是否是这种情况。 如果所有依赖项都是红色下划线,“休斯顿,我们有一个问题”。 输入图片说明

实际上,您可以通过将鼠标悬停在项目名称本身上来查看真实的故障。

输入图片说明

在我的实例中,它说“问题:XXX没有可用的版本”或“无法读取组织.xy.z的描述符” 参考: https://youtrack.jetbrains.com/issue/IDEA-128846https://youtrack.jetbrains.com/issue/IDEA-152555

在这种情况下,我处理的是一个没有关联pom文件的jar包(在我们的Maven Nexus库和我的本地存储库中)。如果这也是你的问题,“当前的解决方法:如果实际上您不需要在自己的代码中使用该jar包中的类(例如仅作为传递性Maven依赖项),则可以将其从pom中注释掉(暂时),重新加载maven项目,然后取消注释。 不知何故,在那之后,IntelliJ记得它的旧工作依赖关系。如果您遇到了传递依赖链中的问题,则临时添加Maven传递排除也可能做到这一点。“

另一件可能有用的事情是使用“更新版本”的Maven而不是捆绑的3.0.5版。为了设置它以使用此作为默认值,请关闭所有intellij窗口,然后打开首选项->构建、执行和部署->构建工具->Maven,并更改Maven主目录,当您调整此目录时,它应该在顶部说“对于默认项目”,尽管您也可以针对特定项目进行调整,只要您在调整后“重新导入”即可。

清除缓存

删除您的intellij缓存文件夹(windows:HOMEPATH / .{IntellijIdea,IdeaC}XXX linux ~/.IdeaIC15),或卸载并重新安装IntelliJ本身。这也可以通过转到文件[菜单]-> 使缓存无效/重新启动...。点击使其无效并重启。这将重新索引整个项目,并解决许多难以跟踪的IntelliJ问题。


2
很奇怪,几乎每篇帖子都建议勾选“使用Maven3导入项目”选项来解决这个问题,而实际上对我来说取消勾选它才解决了问题。为什么?我不知道。谢谢! - janhink
4
在v14 Ultimate中,我选择了一个外部的Maven,一切都恢复正常了。 - AlikElzin-kilaka
@AlikElzin-kilaka 将Maven主目录更改为外部Maven主目录确实有很大帮助。在我更新IDEA到v14 ultimate后,由于“找不到tomcat6插件”,我无法在IDEA中启动我的项目,但我可以使用mvn命令启动项目,并将Maven主目录更改为外部目录解决了这个问题。 - JerseyGood
@Wheeler 谢谢!你的评论让我找到了问题所在。IntelliJ一直重置为捆绑的maven(3.0.5)。切换回Maven 3.3.9让我看到了Roger帖子中的错误提示。 - inanutshellus
1
Bundle (Maven 3)中的maven home directory更改为我安装的maven路径.../maven/3.6.1/libexec对我有效。 - Marcelo Xavier
显示剩余2条评论

42

导入项目时,选择pom.xml而不是项目目录。这样应该就可以了。


1
有时候在Maven项目窗口下点击“重新导入所有Maven项目”选项。 - vikramvi
2
也许这是最优雅、最干净的解决方案(但 IntelliJ 在猜测时有点笨拙)。 - matanster
对我也起作用,在IntelliJ Community Edition 2019.3.4中。感谢您提供这样简单的解决方案。 :) - asymmetryFan

30
尝试从IntelliJ IDEA的Maven项目面板重新导入该项目。它应该会自动下载并配置在pom.xml中定义的所有依赖项。
如果由于某些原因从IDEA无法下载,请尝试使用命令行运行mvn install,以查看是否可以获取依赖项。
当然,所有必需的依赖项和任何自定义存储库都必须直接在pom.xml文件中定义。

22

对于IntelliJ 2016-2.4(我相信其他较新版本也是如此):

查看 > 工具窗口 > Maven项目

在新显示的工具栏中,选择Maven设置(一组工具的图标)。

当此屏幕打开时,展开Maven菜单,然后单击“导入”

在这里,单击“自动导入Maven项目”。还要确保“导入器的JDK”选项与您要使用的JDK版本匹配。

单击确定。现在进入pom.xml中的红色依赖项,选择红色灯泡,然后单击“更新Maven索引”。


1
选对适合的JDK对我有帮助。我还需要运行mvn idea:clean idea:idea来解决最后的问题。 - Vincent F
1
在那个窗口中,点击第一个图标(工具提示为“重新加载所有Maven项目”)对我来说起作用。 - chrishmorris

12

帮助我的方法:

导航到: 设置 | 构建、执行和部署 | Maven

指定 "Maven home 目录" - 你安装 maven 的位置


9

我曾经遇到同样的问题,尝试了这里提到的所有答案,但都没有起作用。

简单解决方法是进入你的项目文件夹,删除所有 .idea 和 .iml 文件,并重新启动 IntelliJ IDE。它就能正常工作了,无需对设置做任何更改。


这对我没有起作用。 - vikramvi

9

如果某些Maven模块没有编译,请检查它们的pom.xml文件是否在“忽略文件”列表中。在IntelliJ中转到

偏好设置 -> 项目设置 -> Maven -> 忽略的文件

并检查相关的pom.xml文件是否被忽略。


在迁移到 IDEA 2022.2.3 期间面临了这个问题。 - Leo

7
打开 IntelliJ Idea,进入文件 > 其他设置 > 默认设置... > Maven (首选项) > 导入或者首选项 > Maven > 导入
在控制台中点击启用自动导入enter image description here enter image description here

5

IntelliJ 2020.3.3

这个方法对我有效。

依次选择“Build, Execution, Deployment(构建、执行、部署)”>“Build Tools(构建工具)”。

更改“在构建脚本中更改后重新加载项目”的设置:

  • 从默认的“外部更改”改为“任何更改”

enter image description here

这样做之后,可能需要一段时间来重新构建项目,但现在我可以在 IntelliJ 中看到 Maven 依赖项:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接