Eclipse 项目中缺少 Maven 依赖项
Posted
技术标签:
【中文标题】Eclipse 项目中缺少 Maven 依赖项【英文标题】:Missing Maven dependencies in Eclipse project 【发布时间】:2011-05-14 19:32:36 【问题描述】:我们用 maven 建立了一个项目来解决依赖关系。它通常工作正常,但现在我尝试在新 PC 上编译和运行它,我遇到了 Eclipse 中缺少依赖项的问题。
有趣的是,如果我在控制台或 Eclipse 中运行“mvn package”,它可以正常工作,甚至会产生包含所有必要 jar 的战争。只有 Eclipse 抱怨“项目没有构建,因为它的构建路径不完整。找不到 org.slf4j.Logger 的类文件......”。如果我将该项目与其他一些计算机(项目运行良好)进行比较,我注意到在 Eclipse 中的“Maven 依赖项”列表下缺少很多库。即使它们在打包的战争中,也可以在存储库文件夹下找到。
所以,jar-s 只是 Eclipse 不会将它们全部列在“Maven 依赖项”下。我能做什么?
计算机在 Windows 7 上运行 64 位 java & eclipse。
【问题讨论】:
它是像jira.codehaus.org/browse/MNG-2045 这样的范围问题吗? 这不值得发布答案,但对于将来阅读此内容的任何人,您似乎需要输入至少三个不带通配符的字符。例如,键入“t”或“to”不会显示任何结果,但“tom”会。信不信由你,我花了大约一个小时寻找不同的原因才意识到这一点。 【参考方案1】:只需右键单击项目文件夹并在 maven > 更新项目 > 选择您的项目 > 确定。 它会自动将 pom.xml 下的所有依赖项下载到名为 Maven Dependencies 的文件夹中。
【讨论】:
【参考方案2】:我在 STS4 中遇到过类似的问题。以下是我的解决方法。
使用命令行构建(mvn clean install)项目。
右键项目文件夹 -> Maven -> 更新项目。
【讨论】:
【参考方案3】: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
【讨论】:
【参考方案4】:我也遇到了同样的问题,用下面的方法解决了: 右键单击项目-> maven->更新项目->强制更新。
【讨论】:
【参考方案5】:我遇到了和你一样的问题,在尝试了所有的清理、更新和安装之后,仍然缺少工件。对我来说问题是配置文件没有被应用。检查您的 .m2/settings.xml 并查找 <activeProfile>
。返回您的项目,右键单击属性 -> maven 并输入您的活动 Maven 配置文件。所有丢失的工件都已解决。
【讨论】:
【参考方案6】:从我的角度来看,我已经尝试了所有这些,但都没有奏效。最可能的问题是您添加了多个依赖项,因此必须将它们包装在 <dependencies> </dependencies>
标记中。希望对您有所帮助!
【讨论】:
【参考方案7】:此问题的根本原因是,当您将项目移植到新机器时,您必须删除项目根目录中的“.project”文件,然后尝试导入那。这使得导入顺利并且为我正确配置了 Maven 依赖项
注意:您应该从 Git 版本控制中排除 .project。
【讨论】:
【参考方案8】:我最近在创建一个maven项目后遇到了类似的问题,maven依赖文件夹没有出现在项目结构中。要解决这个问题,只需在pom文件中添加任何依赖项,例如在下面的代码中,或者右键单击在项目上并转到maven并选择添加依赖项,搜索任何依赖项,例如junit
add this,maven依赖项现在应该出现在您的项目结构中。
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.9.RELEASE</version>
<scope>runtime</scope>
</dependency>
</dependencies>
【讨论】:
【参考方案9】:我将我的项目方面更改为 java 并将工作的 maven 项目 .classpath 内容复制粘贴到该项目。这解决了我的问题。
【讨论】:
【参考方案10】:对我来说问题是由于多模块项目。
-
从磁盘中删除项目
从您的 repo 中签出项目并在 eclipse 中导入为 maven 项目
全新安装
【讨论】:
【参考方案11】:我在 Pom 中出现错误时收到此错误。
-
在控制台上运行 mvn eclipse:eclipse 命令来检查 pom 是否可解析。
如果无法解析,请搜索错误。
【讨论】:
我在 cygwin 下运行,我注意到只有这个项目没有在 eclipse 下构建,尽管我在命令行上成功构建(使用 mvn)。运行mvn eclipse:eclipse
后,所有依赖项都添加到了 eclipse 项目的类路径中,项目看起来很好。 ++
请记住“使用 maven-eclipse-plugin 创建的项目文件在 M2Eclipse 中不受支持”。【参考方案12】:
窗口 -> 首选项 -> Maven -> 安装 -> 全局设置 C:\Program Files (x86)\apache-maven-(版本)\conf\settings.xml
mvn 依赖:树 mvn 依赖:解决
一旦它指向正确的设置文件,右键单击项目:更新依赖项, 更新项目配置,一旦没有加载或代码仍然保持错误,关闭/打开项目
【讨论】:
【参考方案13】:以下解决方案对我有用 - 1-进入项目目录 2- 运行 mvn eclipse:eclipse (希望 mvn 已添加到您的路径中) 3-运行 mvn clean install
在 Eclipse 中刷新您的项目并检查。
【讨论】:
【参考方案14】:这是我遵循的步骤。 1.从eclipse中删除maven项目。 2. 从我的源文件夹中删除除了 src 和 pom 之外的所有文件(.setting/.classpath/target)。 3. 再次导入为 maven 项目 4.再次构建,应该可以看到maven依赖了。
【讨论】:
【参考方案15】:Maven Dependencies:在 Eclipse 中为我解决了什么问题? 我在“pom”文件中添加了依赖项。我做了一个构建,但在 Eclipse 中看不到 Maven 依赖项。 下一步:关闭项目。 然后重新打开项目。 我可以看到 Maven 依赖项。
【讨论】:
【参考方案16】:我也遇到过这个问题。这让我困惑了几个小时。我尝试了本主题中建议的许多解决方案。最后,我发现这是由于 Java 元素过滤器。
【讨论】:
【参考方案17】:答案太多了。你看,可能有很多原因,为什么这不起作用,正如预期的那样。 就我而言,我也没有意识到我的依赖项周围的 - 标记。 掌心
例子:
...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>$org.slf4j.version</version>
</dependency>
</dependencies>
</dependencyManagement>
这只定义了这个和所有具有所需版本的子项目的依赖关系!这是,它是什么,例如应该看起来像在主 POM 中。要真正在当前项目中使用该库,您还必须添加以下依赖项:
...
<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>
现在它将在当前项目中提供库。
【讨论】:
【参考方案18】:对于在其他项目中创建的依赖项,我遇到了这个问题。下载的第三方依赖项在构建路径中显示良好,但不是我创建的库。
SOLUTION:
在未正确构建的项目中,
右键单击项目并选择属性,然后选择 Maven。
取消选中标记为“解决来自工作区的依赖项 项目"
点击应用,然后确定。
再次右键单击您的项目并执行 Maven->更新快照 (或更新依赖)
当您的项目重新构建时,您的错误应该会消失(如果您启用了自动构建,则会自动消失)。
【讨论】:
谢谢,这解决了我的问题。似乎指向它是一个 Eclipse 错误。 嘿,没有 Maven->Update Snapshots(或 Update Dependencies)之类的东西。如果我右键单击,没有 Maven 选项?你所描述的位于哪里?我正在寻找,但在您点击应用后找不到描述 @DarioBB 这个答案已经有将近 5 年的历史了。我已经一年多没有在 Eclipse 中工作了。我不知道这个选项是否仍然可用。我可能不是最新版本。 这个解决方案在 Eclipse neon 中对我有用。之后执行 Maven > 更新项目(而不是更新快照)。【参考方案19】:以上所有内容都不适用于我。 修复只是删除 .m2 下的存储库文件夹,然后从 eclipse 执行 maven 更新。
【讨论】:
【参考方案20】:我的回答与@JerylCook 的回答相似:在一个工作中的 Maven 项目中找到另一个 .classpath
文件,将你的坏文件编辑为好的工作文件。关键是加了
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
在con
和src
类型的每个<classpathentry>
中。不要忘记将<classpathentry .... />
更改为<classpathentry ...>xxx</classpathentry>
。
最后,更新maven项目并在maven中重新安装/重建。
【讨论】:
这是为我做的。谢谢。【参考方案21】:将 .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>
【讨论】:
【参考方案22】:以下步骤适用于我的情况:
1 在eclipse上,右键点击想要的项目Maven -> Disable Maven Nature
2 再次右键单击,然后转到“属性”。删除所有外部 Maven 依赖的证据,只留下 JRE 系统库。
3 在项目上再右键单击一次,然后转到配置 -> 转换为 Maven 项目
它也对我有用
【讨论】:
【参考方案23】:mvn eclipse:clean
然后从 Eclipse:“Maven 更新项目”成功了!
【讨论】:
【参考方案24】:在 Eclipse STS 中,如果“Maven 依赖项”消失,您必须检查并修复您的 pom.xml
。我做了这个(两次)并解决了它。这不是依赖问题,而是在我的pom.xml
中随机生成并移动了一个字符串。
【讨论】:
【参考方案25】:同样的问题也发生在我身上,这是因为 repo 问题导致下载 jar 时出错,pom.xml
中的红旗表示。
我添加了另一个存储库,因此 pom.xml
中的红旗消失了,然后 Eclipse 再次加载了 pom,解决了它的问题并在 Project Explorer 中列出了 maven 依赖项。解决可见问题听起来简单而明显,但是由于 Eclipse 非常乐意运行 maven 并成功构建,因此红旗和 repo 问题并不是其不愿意解析 pom 并列出 maven 的根源。依赖关系
【讨论】:
【参考方案26】:我遇到了类似的问题,并尝试了这篇文章中的所有答案。我最接近解决这个问题的方法是结合 Joseph Lust 和 Paul Crease 解决方案。我在删除并重新导入项目后添加了备份的 pom.xml 文件,直到我删除了 pom.xml 中的依赖管理标签并且神奇地依赖文件夹在那里。
但是,它破坏了子 POM,因为它们需要父 pom.xml 依赖项管理才能运行,因此我的 MVN 无法从 Eclipse 或命令行在项目上正常运行,从而导致 pom 损坏。 xml 错误。
如果一切都失败了,最后的解决方案是手动导入项目所需的 .jar 文件。右键单击项目属性 -> Java 构建路径 -> 库并添加外部 Jar。
如果您的 MVN 在命令行中正常工作并且您已成功构建项目,那么您的 .m2/repository 文件夹中将拥有所需的所有存储库。添加 pom.xml 的依赖项标记中提到的所有外部 jar,您将在 Eclipse 中看到一个引用的库部分,所有讨厌的红色错误都消失了。
这不是最佳解决方案,但它可以让您在 Eclipse 中工作而不会出现任何缺少依赖项的错误,并且还允许您从 Eclipse 和命令行构建 Maven 项目。
【讨论】:
【参考方案27】:以下步骤适用于我的情况:
1 在 eclipse 上,右键点击想要的项目 Maven -> Disable Maven Nature
2 再次右键单击,然后转到属性。删除所有外部 Maven 依赖的证据,只留下 JRE 系统库。
3 在项目上再右击一次,然后转到 Configure -> Convert to Maven Project
【讨论】:
【参考方案28】:以防万一有人尝试了所有其他选项但您仍然卡住,请尝试右键单击项目文件夹,转到 Maven 选项并单击“添加依赖项”按钮。由于某种原因,Eclipse 在第一次尝试时没有从 pom.xml 手动更新依赖项。
【讨论】:
【参考方案29】:对我来说,问题是 maven 找不到位于 myMavenFolder\conf 中的 settings.xml 文件。
我解决此问题的方法是从 eclipse 中选择 settings.xml 文件的正确位置:Window -> Preferences -> Maven -> User Settings
最后,点击应用并更新您的项目
【讨论】:
【参考方案30】:我就是这样解决的
Window->Preferences: Maven->User Settings(在结果窗口中单击“打开文件”,或者使用记事本等外部文本编辑器编辑 settings.xml) 确保 localRepository(显示在此窗口中)正确。我的文件中有错字。 更正 settings.xml 后,单击同一首选项->Maven->用户设置屏幕上的更新设置。现在重建,它将在正确的位置安装最新的 JAR。
【讨论】:
以上是关于Eclipse 项目中缺少 Maven 依赖项的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse 中的项目无法解析 Maven 依赖项中存在的 jars