【问题标题】:Missing Maven dependencies in Eclipse projectEclipse 项目中缺少 Maven 依赖项
【发布时间】: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”会。信不信由你,我花了大约一个小时寻找不同的原因才意识到这一点。

标签: eclipse maven-2 m2eclipse


【解决方案1】:

只需右键单击项目文件夹并在 ma​​ven > 更新项目 > 选择您的项目 > 确定。 它会自动将 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 并查找 &lt;activeProfile&gt;。返回您的项目,右键单击属性 -> maven 并输入您的活动 Maven 配置文件。所有丢失的工件都已解决。

          【讨论】:

            【解决方案6】:

            从我的角度来看,我已经尝试了所有这些,但都没有奏效。最可能的问题是您添加了多个依赖项,因此必须将它们包装在 &lt;dependencies&gt; &lt;/dependencies&gt; 标记中。希望对您有所帮助!

            【讨论】:

              【解决方案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】:

                    对我来说问题是由于多模块项目。

                    1. 从磁盘中删除项目
                    2. 从您的 repo 中签出项目并在 eclipse 中导入为 maven 项目
                    3. 全新安装

                    【讨论】:

                      【解决方案11】:

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

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

                      【讨论】:

                      • 我在 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>
                                    

                                    consrc 类型的每个&lt;classpathentry&gt; 中。不要忘记将&lt;classpathentry .... /&gt; 更改为&lt;classpathentry ...&gt;xxx&lt;/classpathentry&gt;

                                    最后,更新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。

                                                      【讨论】:

                                                        猜你喜欢
                                                        • 2012-04-28
                                                        • 1970-01-01
                                                        • 2019-11-07
                                                        • 2012-03-30
                                                        • 2019-04-09
                                                        • 1970-01-01
                                                        • 2014-06-10
                                                        • 2012-12-15
                                                        相关资源
                                                        最近更新 更多