【问题标题】:Why does M2Eclipse complain about missing artifact when mvn command line doesn't?当 mvn 命令行没有时,为什么 M2Eclipse 会抱怨缺少工件?
【发布时间】:2011-05-15 11:48:45
【问题描述】:

我刚刚设置了全新的 Eclipse Helios 安装,并将 M2Eclipse 配置为使用 Maven 的外部 (v 2.2.1) 安装。

系统在命令行上编译正常,但在 M2Eclipse 中,我的几个项目模块出现错误:

Missing artifact javax.jms:jms:jar:1.1:test

我可以通过从 Atomikos 依赖项中排除 jms 工件来克服错误。但我的主要问题是两者如何提供不同的结果!

更奇怪的是,我又安装了 Eclipse Helios,一切正常。

【问题讨论】:

    标签: java eclipse maven-2 log4j m2eclipse


    【解决方案1】:

    同样的问题:我使用 maven 2.2.1 作为 eclipse 的安装,因为它是在命令行上工作的。 Maven 3 不适用于这个具体项目,抱怨缺少一些依赖项,经过大量研究,在我的情况下,这些依赖项原来来自具有遗留布局的旧 maven 1 存储库。 Maven 3 讨厌这些,当它找到它们时会大哭。

    所以 maven 2 在命令行上工作得很好,但 maven 3 不行。 eclipse 的问题是,即使你指定 maven 2 作为安装来构建你的项目,它也会使用 maven 3(嵌入式安装)来解决依赖关系,所以如果你很不幸需要一个遗留存储库,那么你就完蛋了(我的意思是,日食无济于事)。

    【讨论】:

      【解决方案2】:

      我发布了一个类似的问题,终于找到了答案。见m2eclipse says "Missing artifact" but I can build from cmdline!
      你可以在http://getsatisfaction.com/sonatype/topics/_missing_artifact_from_m2eclipse_but_it_is_not_true找到不同的解决方案

      【讨论】:

        【解决方案3】:

        此外,您可能在 maven 2.2.1 conf/settings.xml 文件中定义了一些替代存储库。如果您使用嵌入式 maven3,这些将被忽略。

        您还可以将 maven 2.2.1 安装指定为 m2eclipse 的 maven 安装。

        【讨论】:

        • 正如我在原帖中提到的,我将我的 2.2.1 安装配置为 M2Eclipse 的外部安装。根据上面 Kuleshov 的说法,问题是 M2Eclipse 无论如何都使用其内部 Maven3 来解决依赖关系。
        【解决方案4】:

        m2eclipse 中的依赖解析器没有使用外部 Maven 安装,它必须使用嵌入式 Maven 版本。所以,我建议获取最新版本的 m2eclipse,以及 Maven 3.x 版本,以尽量减少依赖解析的差异。

        【讨论】:

        • 那么 M2Eclipse 内部已经在使用 M3 了吗?尽管 M2 和 M3 提供了不同的依赖解决方案,但这似乎有点可怕……尽管在数百个工件中只有一个工件。感谢您的提示。
        • 问题是 Maven 2.x 核心并不是真正可嵌入的。 Maven 3.x 包含许多更改以使内部组件在 IDE 中工作。
        • 我遇到了同样的问题,我能够在没有获得最新版本的 maven 的情况下解决它。相反,我转到 Preferences->Maven->Installations 并使用 /Users/myName/.m2/settings.xml 填写标记为“嵌入式安装的全局设置”的字段......这对我有用,因为我有一个本地关系服务于一些不公开可用的项目依赖项的服务器。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-25
        • 2012-08-12
        • 2011-08-23
        相关资源
        最近更新 更多