当前位置: 首页>>系统&架构>>正文


在IntelliJ IDEA中导入Maven的依赖项

qingchuanTR 系统&架构 , , , 1条评论

IntelliJ IDEA 11导入依赖的问题

需要从subversion导入一个项目 - 这是一个maven项目。但是我在处理maven库依赖时遇到了问题,这导致不能自动地包含所有的maven依赖项 - 当我打开该类时,IDEA显示依赖错误。问题如下图所示:

java,maven,intellij-idea,maven-3

想让所有的依赖关系被自动添加 - 这是否可行?还是说必须要通过所有的类文件来识别和添加maven依赖?

经过一些尝试,做了一些修改之后,发现了解决上述问题的一种可行方式,如下图所示:

java,maven,intellij-idea,maven-3

但是,它不会提前引入和检查新的依赖关系吗?!...在intelliJ中是否有任何地方可以设置:自动导出依赖到classpath?

推荐的解决办法

只要POM兼容并且所有依赖关系可用,IntelliJ会自动将所有依赖项添加到项目的类路径(classpath)中。

当将Maven项目导入IntelliJ时,通常会提示是否要为Maven项目配置自动导入(Auto-Import)。这意味着如果对POM做任何更改,这些更改也会自动加载。

可以按如下方式启用此功能:进入文件>设置> Maven>导入,有一个复选框,显示“自动导入Maven项目”。

如果上述办法无效,建议做一个完整的clean-up并重新开始:

  • 关闭项目窗口(和IntelliJ)并删除所有的*.iml文件和所有的.idea文件夹(每个模块应该有一个)

  • 从命令行运行mvn clean install

  • 重新导入(Re-import)将项目引入IntelliJ,注意启用自动导入(auto-import)的提示

针对IntelliJ 2016更新的不同细节处理:

导入Maven项目的自动设置功能已被移动到IntelliJ首选项的构建,执行,部署>构建工具> Maven>导入中。

次佳解决办法

解决方法是:到文件[菜单] - >设置 - > maven - >导入,取消选中“使用maven3导入项目”

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

更新:对于IntelliJ 15,已经没有“使用maven3导入”选项可用了。原因是有时IntelliJ“不能正确解析maven依赖关系”,亦即,如果不能解析其中的任意一个,它就会放弃所有这些依赖。可以通过打开maven项目工具窗口(查看菜单 - >工具Windows - > Maven项目)来判断是否是这种情况。展开一个maven项目及其依赖项,如果依赖关系都以红色加下划线,那么问题来了:

java,maven,intellij-idea,maven-3

可以通过鼠标悬停在项目名称上,可以看到真正的失败原因。

java,maven,intellij-idea,maven-3

在上面的实例中,显示“问题:没有可用的XXX的版本”或“无法读取artifact org.xy.z的描述符”,参考:https://youtrack.jetbrains.com/issue/IDEA-128846https://youtrack.jetbrains.com/issue/IDEA-152555

问题在于,处理一个没有关联的pom文件的jar(在maven nexus repo中,也是本地存储库)。如果大家遇到了同样的问题,“如果实际上不需要代码中使用那个jar中的类(例如只有一个传递性的maven依赖),那么你实际上可以从pom 注释掉该依赖(临时),到maven项目重新加载,然后取消注释。

第三种解决办法

尝试从IntelliJ IDEA的Maven Projects面板中重新导入(Re-Import)项目。这应该会自动下载并配置pom.xml中定义的所有依赖项。

如果由于某种原因在IDEA中下载不能正常工作,请从命令行尝试mvn install,看看是否可以获取依赖关系。

当然,所有必需的依赖项和任何自定义存储库都必须直接在pom.xml文件中定义。

第四种思路

对于IntelliJ 2016-2.4(以及其他new-ish版本):

视图>工具Windows> Maven项目

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

当此屏幕打开时,展开Maven菜单,然后单击导入('Importing')

然后单击“自动导入Maven项目”。另外,还要确保“JDK for Importer”选项与您使用的JDK版本相匹配。

单击确定。现在到pom.xml中的红色依赖,选择红色的灯泡,然后点击'更新Maven索引'。

第五种思路

导入项目时,应该选择pom.xml而不是项目目录。

第六种思路

当创建一个新项目时,只需选择以下选项:

...从外部模型导入项目

在现有外部模型(Eclipse,Maven ...)上创建IDEA项目结构...

在上述问题的情况下,可以关闭项目,只需创建一个新项目。选择之前旧项目的目录,这将覆盖它,使其成为一个Maven项目。

补充

如果导入相同的路径多次,则导入Maven依赖项可能会不起作用。这可能自动发生于导入现有的maven项目之后。出现这种情况的具体原因还不清楚按,但这应该是一个错误。

例如,如果项目是

hibernate
  src/main
  src/test

这三个路径可能被导入为顶级节点:

hibernate
src/main
src/test

如果是这种情况,依赖关系似乎是正确的,但是在删除多余路径(本例中为src/mainsrc/test)之前,它们将不会被使用。完成此操作后,刷新并单击Build>重建项目。 IDEA将提取依赖关系。

此问题的一个症状是,当手动检查库(问题的第二个屏幕截图)时,IDEA会警告有重复的路径。

有几种方法可以让重新读取依赖关系在需要的时候使用。如果访问“Maven Projects”选项卡,则在该选项卡的左上方有一个“Reimport All Maven Projects”图标。如果怀疑IDEA已经搞乱了依赖关系,可以点击文件>让缓存失效。

本文翻译整理自:

本文由《纯净的天空》出品。文章地址: https://vimsky.com/article/3612.html,未经允许,请勿转载。

一条评论

  1. qingchuan 2017年10月9日 22:51

    正常情况下,IntelliJ IDEA的Maven可以通过名称自动加载依赖~