缺少Eclipse项目中的Maven依赖项

时间:2010-11-23 23:40:50

标签: eclipse maven-2 m2eclipse

我们设立了一个与maven合作解决依赖关系的项目。它通常工作正常,但现在我正在尝试编译并在新PC上运行它,我在Eclipse中缺少依赖项时遇到问题。

有趣的是,如果我在控制台或日食中运行“mvn package”,它可以正常运行,甚至可以生成包含所有必需罐子的战争。只有Eclipse抱怨“项目未构建,因为它的构建路径不完整。无法找到org.slf4j.Logger的类文件......”。如果我将项目与其他计算机进行比较(项目工作正常),我注意到Eclipse中的“Maven依赖项”列表中缺少相当多的库。虽然他们在打包的战争中,他们也可以在存储库文件夹下找到。

所以,jar-s就在那里只是Eclipse不会在“Maven依赖”下列出它们。我该怎么办?

计算机在Windows 7上运行,64位java&蚀。

44 个答案:

答案 0 :(得分:91)

好吧,我尝试过这里发布的所有内容,不幸的是,在我的情况下,没有任何作品。所以,尝试不同的组合,我出来解决了我的问题。

1)打开eclipse项目根目录下的 .classpath 文件。

2)将以下条目插入文件:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.eclipse.jst.component.nondependency" value=""/>
        </attributes>
</classpathentry> 

然后,在eclipse(Project-&gt; Clean-Build)重建项目。 您现在可以在Libraries选项卡上的项目的Java Build Path中检查包含的Maven依赖项: enter image description here

答案 1 :(得分:79)

问题解决了!

我不知道究竟是什么解决了它,但我在Eclipse中做了4件事:

  • Window-&gt;偏好设置:Maven-&gt;安装:全局设置 - &gt;打开文件和硬编码的localRepository
  • 项目 - &GT;清洁
  • 右键单击项目:Maven-&gt;更新依赖项
  • 右键单击项目:Maven-&gt;更新项目配置

我想这是更新依赖项,因为在前两个之后没有任何变化。

答案 2 :(得分:29)

我也是Eclipse的新手,我一直遇到类似的问题,Eclipse只是无法识别import语句,即使所有迹象都表明依赖项已成功下载。

您应该通过转到命令行并键入

来检查您的依赖项文件是否已实际下载

mvn dependency:tree

如果你在那里看到你的包,那么Eclipse不承认它,对我有用的东西(有时)是去终端,进入项目文件夹,然后输入

mvn eclipse:clean 然后 mvn eclipse:eclipse

最后在eclipse中刷新项目

我不知道为什么会这样,有时候它不起作用,然后再做一次就行了......所以值得一试!

答案 3 :(得分:26)

我的项目刚搞砸了。以下是我为Eclipse Indigo x64(J2EE 3.7.3)修复它的方法:

  1. 删除了我的POM文件(当然是备份)。
  2. 项目上下文菜单&gt; Maven &gt; 禁用Maven Nature
  3. 删除了项目(但不是磁盘上的内容)。
  4. 重新导入导入&gt; 一般&gt; 现有项目
  5. 项目上下文菜单&gt; 配置&gt; 转换为Maven项目......
  6. 接受Maven向导的默认设置。
  7. 使用备份POM覆盖POM。 (现在您有 Maven Dependencies文件夹)。
  8. Maven Update / Clean for good measure。
  9. 希望有人帮助。 :)

答案 4 :(得分:25)

我遇到了在其他项目中创建的依赖项的问题。下载的第三方依赖项在构建路径中显示正常,但不是我创建的库。

SOLUTION:在未正确构建的项目中,

  • 右键单击项目,选择“属性”,然后选择“Maven”。

  • 取消选中标有“从Workspace解析依赖关系”的复选框 项目

  • 点击Apply,然后OK。

  • 再次右键单击项目并执行Maven-&gt;更新快照 (或更新依赖关系)

当您的项目重建时,您的错误应该消失(如果您启用了自动构建,则会自动失败)。

答案 5 :(得分:7)

如果有人尝试了所有其他选项并且您仍然卡住了,请尝试右键单击项目文件夹,转到Maven选项并单击“添加依赖项”按钮。出于某种原因,Eclipse首次尝试时不会从 pom.xml 手动更新依赖项。

screen shot of menu selection

答案 6 :(得分:6)

好吧,我尝试过这里发布的所有内容,不幸的是,在我的情况下,没有任何作品。所以,尝试不同的组合,我出来解决了我的问题。

1)打开eclipse项目根目录下的 .classpath 文件。

2)将以下条目插入文件:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.eclipse.jst.component.nondependency" value=""/>
        </attributes>
</classpathentry> 

然后,在eclipse(Project-&gt; Clean-Build)重建您的项目。

答案 7 :(得分:5)

我有类似的问题。我通过运行 Maven-&gt;更新项目配置操作

解决了这个问题

答案 8 :(得分:4)

所以我在这个聚会上迟到了大概4到5年,但是在我们回购之后我遇到了这个问题,并且在我的案例中没有其他解决方案能够解决这些警告/错误。

这对我有用:

从Eclipse转到Window - &gt;偏好 - &gt; Maven(扩展) - &gt;错误/警告。最后一个选项读取&#34;生命周期配置未涵盖的插件执行&#34; - 使用此选项的下拉菜单并切换&#34;忽略&#34;,然后应用,然后确定。 (在&#34;需要更新Maven项目&#34;提示说好了)。

更多信息:

这可能不一定&#34;修复&#34;潜在的问题,可能不符合&#34;最佳实践&#34;有些人,但它应该删除/抑制这些警告出现在Eclipse中,让你至少前进。具体来说 - 我正在使用Eclipse Luna Service Release 1(4.4.1)w / Spring Dashboard&amp;安装了Spring IDE Core(3.6.3)和m2e(1.5),在Arch Linux和OpenJDK 1.7上运行。我将我的项目导入为现有的maven项目,并在警告现有警告/错误(稍后处理它们)时选择OK。

Suppress/Remove "Plugin Execution not covered..." warnings Eclipse-Maven

(对不起,我不是设计师,但为了清晰起见添加了图片。)

答案 9 :(得分:4)

对我来说问题是maven无法找到位于 myMavenFolder \ conf 中的 settings.xml 文件。

我解决这个问题的方法是从eclipse中选择settings.xml文件的正确位置:
窗口 - &gt;偏好 - &gt; Maven - &gt;用户设置

最后,点击应用并更新您的项目

答案 10 :(得分:4)

对于我的案例中的以下步骤:

1 在eclipse上,右键单击所需的项目 Maven - &gt;禁用Maven Nature

2 再次右键单击,然后转到属性。删除外部Maven依赖关系的所有证据,只留下JRE系统库。

3 再次右键单击项目,然后转到配置 - &gt;转换为Maven项目

答案 11 :(得分:3)

这是我遵循的步骤。
 1.从eclipse中删除了maven项目。
 2.从我的源文件夹中删除了 src 和pom以外的所有文件(.setting / .classpath / target)。
 3.再次导入为Maven项目
 4.再次构建它,您应该能够看到Maven依赖项。

答案 12 :(得分:3)

上述解决方案都不适合我,所以这个答案适用于我的情况。我最终自己找到了问题,并找到了不同的解决方案。 pom.xml文件包含一个包含依赖项的dependencyManagement标记,当存在时,M2Eclipse不会添加Maven Dependencies文件夹。所以,我删除了这个标签,然后执行了Ualter Jr.提供的解决方案,Eclipse立即添加了丢失的文件夹!

答案 13 :(得分:1)

Maven依赖:在Eclipse中为我解决了什么? 我在“pom”文件中添加了依赖项。我做了一个构建,但是在Eclipse中看不到Maven Dependency。 下一步:关闭项目。 然后重新打开项目。 我可以看到Maven依赖项。

答案 14 :(得分:1)

我的答案类似于@JerylCook的答案:在正在运行的Maven项目中找到另一个.classpath文件,将那些糟糕的文件编辑为好的工作。关键是要添加

<attributes>
    <attribute name="maven.pomderived" value="true"/>
</attributes>

<classpathentry>con类型的每个src中。不要忘记将<classpathentry .... />更改为<classpathentry ...>xxx</classpathentry>

最后,更新maven项目并在maven中重新安装/重建。

答案 15 :(得分:1)

mvn eclipse:clean

然后来自eclipse:“Maven Update Project”可以解决问题!

答案 16 :(得分:1)

在Pom中出现错误时,我收到此错误。

  1. 在控制台上运行mvn eclipse:eclipse命令以检查pom是否可解析。
  2. 如果无法分析,则搜索错误。

答案 17 :(得分:1)

将.classpath更新到下面将每次都有效。

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="WEB-INF/" kind="src" path="src/main/webapp"/>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="output" path="target/classes"/>
</classpath>

答案 18 :(得分:1)

最近我创建了一个Maven项目后遇到了类似的问题,该项目结构中没有出现Maven依赖文件夹,要解决此问题,只需在pom文件中添加任何依赖项(例如下面的代码),或者右键单击在项目上,转到maven并选择添加依赖项,搜索诸如junit之类的任何依赖项,然后将maven依赖项显示在您的项目结构上。

<dependencies>
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context</artifactId>
 <version>4.2.9.RELEASE</version>
 <scope>runtime</scope>
 </dependency>
</dependencies>

答案 19 :(得分:1)

同样的问题发生在我身上,这是因为由于回购问题而导致下载jar时出错,由pom.xml中的红旗表示。

我添加了另一个存储库,因此pom.xml中的红色标记消失了,然后Eclipse再次加载了pom,解决了它的问题并在Project Explorer中列出了maven依赖项。解决可见问题听起来很简单明了,但由于Eclipse非常乐意运行maven并成功构建,因此红旗和回购问题的根本原因并不在于它不愿意解析pom并列出maven依赖

答案 20 :(得分:1)

这就是我解决它的方式

  • Window-&gt;偏好设置:Maven-&gt;用户设置(点击&#34;打开文件&#34;在结果窗口中,或者只需使用外部文本编辑器(如记事本)编辑settings.xml) 确保localRepository(在此窗口中显示)正确无误。我的文件中有拼写错误。
  • 更正settings.xml后,点击更新设置,该设置位于相同的Preferences-&gt; Maven-&gt;用户设置屏幕上。

现在重建,它会将最新的JAR安装在正确的位置。

答案 21 :(得分:1)

对我来说,在.project文件中添加一个buildCommand(org.eclipse.m2e.core.maven2Builder)和一个nature(org.eclipse.m2e.core.maven2Nature)就足够了,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>iText</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.m2e.core.maven2Builder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.jdt.core.javanature</nature>
        <nature>org.eclipse.m2e.core.maven2Nature</nature>
    </natures>
</projectDescription>

我有 enter image description here

答案 22 :(得分:1)

我可以解决错误 1)右键单击(您的maven项目) - &gt; maven - &gt; maven安装

成功安装后

2)右键单击(您的maven项目) - &gt; maven - &gt;更新项目。并且maven的整个错误得到了解决!

答案 23 :(得分:1)

如果执行Maven后出现“嵌套路径”错误 - &gt;更新项目配置(或在Juno中更新“更新配置...”),然后您的构建路径配置错误。

右键单击项目 - &gt;构建路径 - &gt;配置构建路径

确保仅包含该级别的'/ src'和目录。如果您有例如'/ src'以及'/ src / main / resources'存在,这是不正确的。第二个资源('/ src / main / resources')在第一个('/ src')下“嵌套”,导致你无法导入资源,因为它可以防止eclipse看到maven依赖。

答案 24 :(得分:1)

我有一个类似的问题,并尝试过这篇文章中的所有答案。我最接近解决这个问题的方法是将Joseph Lust和Paul Crease解决方案结合起来。我在删除并重新导入项目后添加了备份的pom.xml文件,直到我删除了pom.xml中的依赖关系管理标记并且神奇地将依赖项文件夹放在那里时才显示任何内容。

然而,它分解了子POM,因为他们需要父pom.xml依赖关系管理来运行,结果我的MVN在Eclipse或命令行上的项目上运行不正常,给出了一个破碎的pom。 xml错误。

如果全部失败,最后一个解决方案是手动导入项目所需的.jar文件。右键单击项目属性 - &gt; Java构建路径 - &gt;图书馆和添加外部Jar。

如果您的MVN在命令行中正常工作并且您已成功构建项目,则您将拥有.m2 / repository文件夹中所需的所有repos。添加pom.xml的dependencies标记中提到的所有外部jar,你会在Eclipse中看到一个引用的库部分,所有讨厌的红色错误都消失了。

这不是最佳解决方案,但它可以让您在Eclipse中工作而不会出现任何缺少依赖项的错误,并且还允许您从Eclipse和命令行构建Maven项目。

答案 25 :(得分:1)

我的问题听起来很相似,所以我会加入讨论。我已取消将现有maven项目导入Eclipse,导致不允许更新,无法正常完成工作空间构建。

我需要做的就是选择Run As... -> Maven build...并在目标下输入dependency:go-offline然后运行它。

然后我右键单击该项目并选择Maven -> Update Project...并更新该特定项目。

这最终允许它创建源文件夹并完成导入。

答案 26 :(得分:0)

窗口->首选项-> Maven->安装->全局设置 C:\ Program Files(x86)\ apache-maven-(version)\ conf \ settings.xml

MVN依赖项:树 mvn依赖项:解决

一旦它指向正确的设置文件,请右键单击项目:更新依赖项, 更新项目配置,一旦未加载或代码仍然保持错误,请关闭/打开项目

答案 27 :(得分:0)

enter image description here只需右键单击 Project 文件夹和 ma​​ven > 更新项目 > 选择您的项目 > 确定。 它会自动将 pom.xml 下的所有依赖下载到名为 Maven Dependencies 的文件夹中。

答案 28 :(得分:0)

我在 STS4 中遇到过类似的问题。这是我解决它的方法。

  • 使用命令行构建(mvn clean install) 项目。

  • 右键单击项目文件夹 -> Maven -> 更新项目。

答案 29 :(得分:0)

You need to add the maven-compiler-plugin in your pom.

 1. Add the maven compiler plugin to your pom.

<build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <release>13</release>
                </configuration>
            </plugin>
        </plugins>
    </build>

2]Right click on the project -> Maven ->Update Project

答案 30 :(得分:0)

我也遇到了同样的问题,使用以下方法解决了: 右键单击项目-> maven-> 更新项目-> 强制更新。

答案 31 :(得分:0)

在尝试了所有的清洁,更新和安装后,我和您遇到了同样的问题,并且仍然缺少工件。对我来说,问题是没有应用配置文件。检入.m2 / settings.xml并查找<activeProfile>。返回您的项目,右键单击属性-> maven,然后输入您的Active Maven配置文件。解决了所有遗失的工件。

答案 32 :(得分:0)

从一开始,我就尝试了所有这些方法,但没有一个起作用。最可能的问题是您添加了多个依赖关系,因此必须将它们包装在<dependencies> </dependencies>标记中。希望对您有帮助!

答案 33 :(得分:0)

此问题的根本原因是,当您将项目移植到新计算机时,必须删除项目根目录中的“ .project”文件,然后尝试导入那。这样可以顺利进行导入,并为我正确配置了Maven依赖项

注意:您应该将.project排除在Git版本控制之外。

答案 34 :(得分:0)

我将项目构面更改为Java,然后将正在工作的Maven项目 .classpath 内容复制并粘贴到了该项目中。这解决了我的问题。

答案 35 :(得分:0)

对我来说,这是由于多模块项目引起的。

  1. 从磁盘删除项目
  2. 从您的仓库中签出项目,并在Eclipse中作为maven项目导入
  3. 全新安装

答案 36 :(得分:0)

以下解决方案对我有用-
1-转到项目目录
2-运行mvn eclipse:eclipse(希望mvn已添加到您的路径中)
3-运行mvn clean install

在Eclipse中刷新项目并检查。

答案 37 :(得分:0)

令人惊讶的是,这个问题有很多不同的原因和可能的解决方案。我找到了一个适合我的不同解决方案。

嗯,这不是一个解决方案,而是一个发现:我可以在Package Explorer中看到Maven Dependencies节点,这是Java透视图的默认设置,但是我可以看到它Java EE透视图,默认使用Project Explorer。这两个探险家在快速浏览时看起来非常相似,所以你可能会看到两者中的Maven依赖关系。

当我试图解决这个问题时,我没有意识到这一点,所以最终对我来说这不是一个真正的问题。

答案 38 :(得分:0)

整个项目在eclipse看起来很奇怪,maven依赖项文件夹丢失,它显示某些类型为未知,但我能够在maven中成功构建它。解决了我的问题是将gen文件夹添加到项目构建路径上的源路径。

这可能类似于Android /FBReaderJ/gen already exists but is not a source folder. Convert to a source folder or rename it

答案 39 :(得分:0)

我也遇到过这个问题。它困扰了我好几个小时。我尝试了本主题中提出的许多解决方案。最后,我发现这是由于Java元素过滤器。

Java Element Filters.

答案 40 :(得分:0)

这么多答案。你看,可能有很多原因,为什么这不起作用,如预期的那样。 在我的情况下,我也没有意识到 - 围绕我的依赖关系。 捂脸

示例:

...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${org.slf4j.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

这只能确定具有所需版本的此子项目和所有子项目的依赖关系!这就是它,例如应该在master-POM中看起来像。要真正使用当前项目中的lib,您还要添加依赖项,如下所示:

...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${org.slf4j.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
    </dependency>
</dependencies>

现在它将在当前项目中提供lib。

答案 41 :(得分:0)

以上所有内容都没有对我有用。 因为修复只是删除.m2下的存储库文件夹,然后从eclipse执行maven更新。

答案 42 :(得分:0)

对于我的案例中的以下步骤:

1在eclipse上,右键单击所需的项目Maven - &gt;禁用Maven Nature

2再次右键单击,然后转到“属性”。删除外部Maven依赖关系的所有证据,只留下JRE系统库。

3再次右键单击项目,然后转到配置 - &gt;转换为Maven项目

它也适用于我

答案 43 :(得分:0)

在Eclipse STS中,如果&#34; Maven Dependencies&#34;消失了,你必须检查并修复你的pom.xml。我做了这个(两次)我解决了。这不是依赖项问题,而是生成并在我的pom.xml中随机移动的位置。