2010-11-25 46 views
6

我刚刚安装了Eclipse Helios的全新安装,并已配置M2Eclipse以使用Maven的外部(v 2.2.1)安装。为什么在mvn命令行不执行时,M2Eclipse会抱怨缺失的工件?

系统编译命令行上很好,但来自内部的m2eclipse我的几个项目模块有一个错误:

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

我可以通过排除从Atomikos公司依赖的JMS神器让过去的错误。但我的主要问题是两者如何提供不同的结果!

更奇怪的是,我有另一个安装的Eclipse Helios,一切正常。

回答

5

m2eclipse中的依赖关系解析器没有使用外部的Maven安装,它必须使用嵌入的Maven版本。因此,我建议您获取最新版本的m2eclipse以及Maven 3.x版本,以最大限度地减少依赖关系解决方案中的差异。

+0

那么M2Eclipse已经在内部使用M3了吗?虽然M2和M3提供了不同的依赖关系解决方案,但似乎有点可怕....虽然只有数百个中的1个产品。谢谢你的提示。 – HDave 2010-11-25 07:07:25

+2

问题是Maven 2.x内核并不是真正可嵌入的。 Maven 3.x包含许多变化,以使内部组件在IDE内部工作。 – 2010-11-25 15:53:51

3

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

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

1

同样的问题不同的解决方案:我用maven 2.2.1作为安装从Eclipse中使用,因为它是在命令行上工作的人。 Maven 3对这个具体项目不起作用,抱怨一些遗漏的依赖关系,经过大量的研究后,我发现这个依赖关系来自旧的Maven 1存储库和传统布局。 Maven 3讨厌这些,当它们发现它们时会爆发出呐喊。

因此,maven 2在命令行上工作得很好,但maven 3没有。 eclipse的问题在于,即使你指定maven 2作为安装来构建你的项目,它也会使用maven 3(嵌入式安装)来解决依赖关系,所以如果你非常不情愿需要一个遗留的存储库, ,月蚀不会帮助)。

相关问题