当M2Eclipse是同一工作区中的项目时,它无法找到依赖项

时间:2010-12-15 12:52:50

标签: maven-2 eclipse-plugin m2eclipse

我知道M2eclipse插件存在各种已知问题,我想这只是其中之一。希望有人知道解决方案或解决方法。

我们在工作区中有30个项目,但为了清晰起见,假设只有2个:A en B。

B包含A作为B的pom.xml中的依赖项。 我们遇到的问题是在eclipse中无法找到A的类,因此会出现编译错误。但是,如果你'安装'A将它部署在本地存储库和关闭项目A,那么一切都很好;没有编译错误。所以,如果项目中存在A,M2Eclipse似乎无法在eclipse中正确设置类路径。

为了使事情变得更奇怪,我们还有项目C也依赖于(与B完全相同)项目A,但这里我们没有编译错误。我们无法识别项目B或C之间的任何有意义的差异;如上所述,他们以同样的方式包括A.

感谢您的帮助, 斯泰恩

P.S。我正在使用插件的版本0.10.2.20100623

2 个答案:

答案 0 :(得分:2)

之前我曾经历过这种行为,过去我单独导入或签出maven项目时发生了这种情况。

先决条件:在签出多模块Maven项目之前,请确保已安装m2extras:update site

首先要尝试:右键单击每个项目并选择Maven - >更新项目配置。该插件可能足够智能,可以检测到它可以在项目之间构建项目引用。

要尝试的第二件事(如果你的30个项目都是一个根目录下的子模块):这将是最简单的,因为你可以使用m2eclipse的SCM集成在根pom上执行“Checkout as Maven Project ...” 。 M2eclipse将为superpom和每个子模块创建一个项目,并适当地构建项目引用。

尝试第三件事:我尝试在每个项目的项目设置中手动创建项目引用,以反映它们的相互依赖性。这是很多工作,除非你检查你的eclipse .project / .settings(eww),否则必须为每个工作副本单独完成。

答案 1 :(得分:2)

分辨

最后,经过几个小时的痛苦,我找到了原因。 我专注于.classpath和.settings文件,但问题出在.project文件中。项目A中的此文件在标记natures中的条目后丢失:

<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>

添加此解决了问题。