在IntelliJ IDEA中导入Maven依赖项

时间:2012-07-12 15:06:21

标签: java maven intellij-idea maven-3

我有一个关于IntelliJ IDEA 11的小问题。我刚刚从subversion导入了一个项目 - 它是一个maven项目。但我在maven库依赖项中遇到问题,因此我无法自动包含所有maven依赖项 - IDEA仅在我打开该类时显示依赖项错误/这就是我所得到的:

enter image description here

所以我希望自动添加所有依赖项 - 这是可能的还是我必须通过所有类文件来识别和添加maven依赖项?!

更新:做了一些修改后,我发现了如何以某种方式解决我的问题。多数民众赞成我所做的: enter image description here

但我认为逻辑上它不会包含并检查前面的新依赖项?!...在intelliJ中是否有任何设置区域 - 自动导出依赖于类路径?!

37 个答案:

答案 0 :(得分:239)

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

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

您可以启用此功能转到文件>设置> Maven>导入时,有一个复选框,上面写着“自动导入Maven项目”。

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

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

IntelliJ 2016更新

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

答案 1 :(得分:61)

我以为我把0.02美元扔到这里:对我来说,解决这个问题的方法是去

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

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

更新:再次使用IntelliJ 15进入此状态,没有"使用maven3导入"选项可用了。原因是有时IntelliJ"没有正确解析maven依赖关系"如果它无法正确解析其中一个,显然它会放弃所有。您可以通过打开maven项目工具窗口(查看菜单 - >工具窗口 - > Maven项目)来判断是否是这种情况。然后展开你的一个maven项目及其依赖项。如果依赖项都用红色加下划线,那么我们就会遇到问题"。 enter image description here

您实际上可以通过鼠标悬停项目名称本身来查看真正的失败。

enter image description here

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

在这种情况下,我似乎正在处理一个没有相关pom文件的jar(在我们的maven nexus repo中,以及我的本地存储库)。如果这也是你的问题," urrent可以解决:如果你实际上不需要在自己的代码中使用该jar中的类(例如只有传递maven依赖),你实际上可以将它注释掉从pom(暂时),maven项目重新加载,然后取消注释。不知怎的,在那之后,IntelliJ"记得"它的旧工作依赖。如果您从传递的依赖链中遇到maven传递排除,那么暂时添加它也可能会这样做。"

另一件可能有用的事情是使用"更新的版本" maven比捆绑3.0.5。 要将其设置为默认使用此选项,请关闭所有intellij窗口,然后打开首选项 - >构建,执行和部署 - >构建工具 - > maven,并更改maven主目录,它应该说"对于默认项目"在你调整它的顶部,虽然你也可以为特定项目调整它,只要你重新导入"调整后。

其他可能有用的方法:删除你的intellij缓存文件夹(windows:HOMEPATH /。{IntellijIdea,IdeaC} XXX linux~ / .IdeaIC15)和/或卸载并重新安装IntelliJ本身。 GL!

答案 2 :(得分:30)

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

答案 3 :(得分:19)

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

如果出于某种原因下载IDEA不起作用,请从命令行尝试mvn install,看看是否可以获取依赖项。

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

答案 4 :(得分:12)

对于IntelliJ 2016-2.4(我相信其他新版本):

查看>工具窗口> Maven项目

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

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

在此处,单击"自动导入Maven项目。"同时确保进口商的JDK'选项与您要使用的JDK版本匹配。

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

答案 5 :(得分:8)

是什么帮助了我:

Navigage: 设置|构建,执行,部署|行家

指定“Maven主目录” - 您安装maven的地方

答案 6 :(得分:6)

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

  

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

并检查是否忽略了相关的pom.xml。

答案 7 :(得分:5)

打开IntelliJ Idea,转到    文件>其他设置>默认设置...> Maven(偏好)>导入或|  Preferences > Maven > Importing

enter image description here

点击控制台中的启用自动导入

enter image description here

答案 8 :(得分:4)

创建新项目时,您只需选择选项:

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

你会从那里发现它非常直接 在您的情况下,您可以关闭您的项目,只需创建一个新项目。选择项目的目录,它将覆盖它,使其成为Maven项目。

答案 9 :(得分:4)

如果多次导入相同的路径,则导入Maven依赖项可能不起作用。这可能在导入现有maven项目后自动发生。我无法弄清楚为什么会发生这种情况,所以我倾向于认为这是一个错误。

例如,如果我的项目是

hibernate
  src/main
  src/test

这三条路径可以作为顶级节点导入:

hibernate
src/main
src/test

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

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

有多种方法可以在需要时重新读取依赖项。如果您转到“Maven项目”选项卡,则选项卡左上角会显示“重新导入所有Maven项目”图标。如果您怀疑IDEA感到困惑,可以点击文件>无效缓存。

答案 10 :(得分:3)

重新导入该项目。如果你安装了maven插件,你可以使用它。

右键点击该项目 - > Maven - >再次导入

答案 11 :(得分:3)

我遇到了类似的问题,就我而言,我使用的是自定义settings.xml,该自定义不是从IntelliJ中挑选的。

解决方案:
File > Settings > Build, Execution, Deployment > Maven: User settings file(在此处选择我的自定义settings.xml)。

答案 12 :(得分:3)

进入项目结构,在项目Settings,Modules下,选择依赖项表。对于每个依赖项,将范围从“测试”更改为“编译”。

答案 13 :(得分:2)

我遇到了IntelliJ 2016.3.X无法解决某些子依赖关系的问题。这可以通过更改设置>中的Maven home directory来解决。构建,执行,部署>构建工具> Maven从Bundled (Maven 3)/usr/share/maven

之后,所有子依赖关系都得到了解决,就像之前的IntelliJ版本一样。

答案 14 :(得分:2)

所以我在我组织的许多代码库中也遇到了这个问题。除了上面建议的答案之外,我们还可以调整 jvm 的分配池内存。这是因为,大型代码库中带来的依赖量可能会让 jvm for IDE 完全构建项目。因此尝试增加 XMX 值并且它起作用了! Added -Xmx3072 to resolve the issue of "not building" my Java project in IntelliJ

enter image description here

答案 15 :(得分:2)

我的Macbook遇到了类似的问题,只是在pom.xml中做了一个小改动,它开始下载所有依赖项:

我的Windows机器的早期依赖关系如下所示:

<dependencies>
 <dependency>
  <groupId>javax.mail</groupId>
  <artifactId>mail</artifactId>
  <version>1.4</version>
</dependency>
</dependencies>

我刚刚删除了<dependencies></dependencies>标签,它开始下载所有依赖项:

<dependency>
  <groupId>javax.mail</groupId>
  <artifactId>mail</artifactId>
  <version>1.4</version>
</dependency>

我不确定它是否对您有用。.但是对我来说很好。

谢谢

答案 16 :(得分:2)

设置 - &gt;中为用户设置文件指定的首个检查路径构建,执行,开发 - &gt;构建工具 - &gt; Maven 。 该字段应包含您的maven的 settings.xml 的路径。 settings.xml也应该有正确的远程存储库路径。

答案 17 :(得分:1)

我遇到了同样的问题并尝试了一些没有解决问题的建议,我使用的是Intellij版本13.1.3

最后花了几个多小时试图修复它后,我决定尝试升级版本并在14.1.4版本中打开项目,最终解决了这个问题。我认为这可能是之前版本中的一个错误。

我希望这有帮助!

答案 18 :(得分:1)

从项目目录中删除.idea文件夹,然后将项目重新导入为Maven项目对我来说很有效。

答案 19 :(得分:1)

就我而言,其中一个模块由于某种原因被忽略了。 解决此问题的方法:右键单击有问题的模块,然后选择“取消忽略项目”。

unignore project example

答案 20 :(得分:1)

我遇到了同样的问题,并尝试了此处提到的所有答案,但均无济于事。

简单的解决方案是转到您的项目文件夹,并删除所有.idea和.iml文件,然后重新启动IntelliJ ide。有用。无需对设置进行任何操作。

答案 21 :(得分:1)

我能够通过从项目设置->模块列表中删除不必要的模块来解决此问题。

enter image description here

事实证明,当我通过从项目文件夹导入(而不是通过打开pom.xml)创建IntelliJ项目时,这些附加模块是由IntelliJ IDEA自动创建的。然后,在将该项目声明为Maven项目之后,创建了正确的模块,并且现有模块与它们冲突。在项目创建过程中也可以排除那些模块。

答案 22 :(得分:1)

Maven - Reimport不适合我。 我在STS(Eclipse)中有Spring项目,我的解决方案是将项目导入IDEA,如下所示:

1)文件 - 新建 - 来自现有源的项目... - 选择目录 - 选择Eclipse 2)在设置中将Maven autoimport设置为true 3)然后右键单击pom.xml并选择Add as Maven Project。

在此之后它已经导入了所有内容。

答案 23 :(得分:1)

劫持一下,添加最终为我工作的东西:

进入IDE右边缘的Maven Projects侧边栏,验证您的依赖项是否在您的模块下正确列出。假设它们是,请让IDEA重新进口(顶部的第一个按钮,看起来像两个蓝色箭头形成一个逆时针圆圈)。

一旦我这样做了,让IDEA为我重新加载项目,我所有的依赖都被神奇地理解了。

供参考:这是IDEA 13.1.2

答案 24 :(得分:1)

我通过使用正确的镜像配置更新我的settings.xml文件解决了这个问题,似乎每次导入maven模块时intellij都会尝试从存储库下载元数据。

答案 25 :(得分:1)

如果在右下角显示“2个进程正在运行......”或类似情况,您可能只需等待即可完成,因为下载所有广告可能需要一段时间。

答案 26 :(得分:0)

无效缓存对我有用:

文件 > 使缓存无效

检查:

清除文件系统缓存和本地历史记录
清除下载的共享索引

然后失效并重启

答案 27 :(得分:0)

IntelliJ 2020.3.3

这个是为我做的。

构建、执行、部署 > 构建工具。

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

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

enter image description here

这样,项目重建需要一段时间,但现在我可以在 IntelliJ 中看到 Maven 依赖项:

enter image description here

答案 28 :(得分:0)

此问题的一种可能模式是您没有与Nexus的连接,并且基本上想以离线模式构建项目。但是,当您导入项目时,Idea会尝试自动下载Maven依赖项。您在“设置”中设置了“脱机工作”复选框,但为时已晚:在初次下载尝试期间某些东西已经损坏。这里列出的两个选项都不适合我解决此问题。相反,我做了以下事情:

  1. 首先创建一个空的Java(不是Maven)项目
  2. 在Maven设置中选中了“脱机工作”选项
  3. 将我的项目作为Maven模块添加到了这个新项目中

以这种方式工作。

答案 29 :(得分:0)

  1. 在maven选项卡中,单击+,然后选择pom.xml
  2. 在maven选项卡中,单击下载源和文档
  3. 在项目结构(您可以在其中查看项目文件/目录)上,右键单击要构建的项目,然后选择“构建模块项目名称”。
  4. 从选项卡运行-使用+添加应用程序编辑配置,然后填写以下字段:主类-从“项目”选项卡中手动选择主类ii。使用模块的类路径-选择应用程序名称iii。缩短命令行-类路径文件
  5. 现在只需运行应用程序即可。

答案 30 :(得分:0)

  

重新导入专家-> close-intellij -> 删除整个   - mm0..7 文件夹-> 重新打开项目-> 构建-> build-project / build-module- “您的父模块”

答案 31 :(得分:0)

在我的情况下,MAVEN使用的JAVA路径未设置为机器上配置的JAVA_HOME。因此,它甚至没有尝试下载依赖项。 我遵循的步骤解决了这个问题,

  1. 检查了JAVA路径,设置>>构建>>构建工具>>导入>> JDK for importer 。将其指向JAVA_HOME。

  2. mvn clean install -U

    使用上述命令强制下载依赖项。

  3. 重新导入Maven项目

答案 32 :(得分:0)

您可能正在公司的内部网络下工作。

如果是这样,要下载或添加外部Maven依赖项,可能需要更新settings.xml文件夹下的user/<username>/.m2文件。

与管理员联系以提供正确的settings.xml文件,然后将其粘贴到您的.m2文件夹中。

答案 33 :(得分:0)

我能够通过在pom.xml文件中的build标记之后添加以下代码行来修复我的问题,我从正在运行的项目中进行了比较,发现差异,现在我一切都很好。

<repositories>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>

答案 34 :(得分:0)

问题似乎是尽管在pom.xml中列出了依赖项,但IntelliJ IDEA在您运行项目时不会重建这些依赖项。

对我有用的是:

转到“运行” - &gt; “编辑配置...”,找到您的应用程序,确保展开“发布之前:”部分,单击绿色加号,然后选择“构建项目”。

enter image description here

答案 35 :(得分:0)

如果其他所有方法都失败了,请检查本地.m2存储库中的jar文件是否确实有效且未损坏。就我而言,该文件尚未完全下载。

答案 36 :(得分:0)

在maven中,当我删除dependencyManagement xml部分并且直接在项目部分下面有依赖项时,依赖项被包含在内