【问题标题】:m2eclipse says "Missing artifact" but I can build from cmdline!m2eclipse 说“缺少工件”,但我可以从命令行构建!
【发布时间】:2011-07-26 21:52:11
【问题描述】:

我第一次尝试使用这个 Sonatype Eclipse 插件来处理一个现有的(巨大的)软件,我可以从命令行使用 maven 构建它。

我已将插件配置为使用我的 maven 2.2.1 安装,而不是内置的 Maven 3。

在 Eclipse 中,我有 25 个项目(通过根 pom.xml 加载),其中 4 个有编译错误; maven 控制台包含很多这样的行:

缺少工件 commons-logging:commons-logging:jar:1.0.4:compile

我的存储库中有所有的 jar,并且正确定义了 M2_REPO 类路径变量。为什么插件看不到所有的罐子?

这些项目的 .classpath 文件仅引用“MAVEN2_CLASSPATH_CONTAINER”,没有 jar 列表。 Eclipse 中的 pom.xml 在第一行显示缺少 jar 的错误,但我可以从命令行构建!

有什么想法吗?我需要帮助!如果我不解决这个问题,我会尝试迁移到 NetBeans。

谢谢。

【问题讨论】:

    标签: maven dependencies m2eclipse


    【解决方案1】:

    构建路径中缺少 jars 表明您尚未启用 Maven 依赖项。右键项目,选择Maven,选择“启用Maven依赖管理”。这允许 M2Eclipse 引用您的 POM。

    【讨论】:

      【解决方案2】:

      right click on your project > Maven > Update Dependencies

      然后

      right click on your project > Maven > Update Project configuration

      假设您正确安装了 M2Eclipse 插件,这应该可以解决问题。另外,检查是否有一个选项 right click project > Maven > Enable dependency Management 选择那个。

      【讨论】:

      • 两个更新命令都会再次生成“缺少工件”错误列表。我已经尝试了我的 maven 2.2.1 安装和内置的 Maven 3。启用了依赖管理。是否有任何内部索引未被这些命令更新?我什至尝试从头开始重新安装 Eclipse Helios SR2 以及来自 Eclipse Marketplace 的插件:没有任何改变。
      • 这可能是由于内置 Maven3 (m2eclipse) 和命令行 Maven2 之间的一些冲突造成的,因为它们共享同一个本地存储库 ~/.m2/repository。一些临时解决方案可能是删除本地存储库(或至少删除有问题的工件)并让带有 M2Eclipse 插件的 Eclipse 再次获取依赖项。或者将命令行 Maven2 更新为 Maven3。
      【解决方案3】:

      我终于找到了解决方法。这肯定是 m2eclipse 中的一个错误,但是当我在 .m2\repository\opensymphony\quartz\1.6.0\ 中的 quartz-1.6.0.jar 旁边添加 quartz-1.6.0.pom 时,问题就消失了
      http://repo1.maven.org/maven2/opensymphony/quartz/1.6.0/ 中不存在 pom,但您可以从 quartz-1.6.0-bundle.jar 链接集 http://jira.opensymphony.com/browse/QUARTZ-482 中提取它
      这是一个奇怪的解决方案,但它也适用于我同事的 PC。

      【讨论】:

      • 我检查了本地存储库并找到了quartz-1.6.2.jar 但没有pom,但是,在按照@Jurie 所说的进行操作后,我的情况就解决了。
      【解决方案4】:

      如果在Eclipse中出现上述问题时启用了依赖管理,您可以Project > Maven > Disable Dependency Management and then \Project > Maven > Enable Dependency Management。这通常会删除 pom.xml 中的任何依赖错误。

      在完成项目依赖项的上述步骤之后,也可以按照@Nishant 在上面的回答中指出的那样做。

      【讨论】:

      • 该选项不再存在(至少在我的安装中),但我能够通过将 pom.xml 移动到项目文件夹然后将其移回来清除消息。
      • 在旧版本的 Eclipse(例如 Indigo)上添加 Maven 属性,右键单击项目 > 配置 > 转换为 Maven 项目
      • 当您遇到实际的依赖问题时会发生什么?仅仅因为软件中有一个怪癖,我不建议禁用该功能。在求助之前先看看其他答案。
      【解决方案5】:

      关闭eclipse IDE再打开,应该可以解决这个问题了。

      【讨论】:

        【解决方案6】:

        其他建议均无效,但以下步骤对我有用(SpringSource Tool Suite 2.6.1):

        • 备份本地Maven仓库的内容
        • 删除存储库
        • 项目 > Maven > 更新依赖项
        • 从备份中替换公共存储库中不可用的任何内容

        【讨论】:

          【解决方案7】:

          如果禁用和启用项目依赖管理没有帮助(通常有帮助),您可以修改项目中的 .classpath 文件并添加一行:

          <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
          

          eclipse重启后需要添加依赖。

          【讨论】:

            【解决方案8】:

            只是添加另一个可能的解决方案,如果您有一个具有相互依赖关系的多项目构建,如果您在子项目 pom 中定义了一个存储库来解决只有该项目依赖的特定依赖关系并且它依赖于其他解决方案的子项目无法在子项目中看到这些依赖项(即使它可以从命令行工作)。

            将 repo 定义移动到父 pom。

            【讨论】:

              【解决方案9】:

              使用 Eclipse Kepler,删除和重新添加 maven 特性解决了我遇到的同样问题。这个过程实际上所做的是修改 .settings/org.eclipse.m2e.core.prefs 文件,更改行

              resolveWorkspaceProjects=false
              

              resolveWorkspaceProjects=true
              

              因此,如果需要,您可以手动进行此更改。

              【讨论】:

              • 手动更改此设置终于解决了我的问题。奇怪的是,虽然 GUI 没有点击。
              • 设置为 true 但没有运气!
              【解决方案10】:

              为未来的 Google 员工添加我的 2c:

              每当出现这个问题时,我都会从 m2 存储库中删除相应的文件夹(在 Mac 上它位于 ~/.m2/repository) 上,然后使用 clean install 从 eclipse 中再次构建。

              每次都有效。

              【讨论】:

                【解决方案11】:

                您可能需要告诉 Eclipse 强制更新:

                Project -> Maven -> Update Maven Project
                

                然后确保您已选择:

                Force Updates of Snapshots/Releases
                

                当 mvn install 将一些 jar 文件复制到 Maven 存储库中并且 Eclipse 在此 jar 被复制到那里之前检查了此 repo 时,就会发生这种情况。

                【讨论】:

                  【解决方案12】:

                  我也遇到了同样的问题。在 CLI 全新安装上,然后在 eclipse 上删除依赖项,再次粘贴它就可以了。

                  【讨论】:

                    【解决方案13】:

                    删除maven本地仓库中除jar之外的所有工件

                    【讨论】:

                      【解决方案14】:

                      迟到的答案:在我的情况下,我在 settings.xml 中有多个配置文件。由于在 Maven Build 运行配置中选择了正确的配置文件,因此构建工作正常,但编辑器显示错误,因为未通过 Project -> Maven -> Select Maven Profiles 选择配置文件 ...

                      【讨论】:

                        猜你喜欢
                        • 2011-05-15
                        • 2019-02-11
                        • 2011-04-02
                        • 2011-11-29
                        • 2013-11-10
                        • 1970-01-01
                        • 2018-10-17
                        • 2020-07-11
                        • 2014-04-29
                        相关资源
                        最近更新 更多