2010-12-15 57 views
1

我知道M2eclipse插件存在各种已知问题,我想这只是其中之一。希望有人知道解决方案或解决方法。M2Eclipse在同一个工作区中的项目中找不到依赖关系

我们就像在我们的工作区项目30个,但为了清楚起见,让我们假设只有2有:一个连接B.

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

为了让事情变得陌生,我们也有项目C,它也依赖于项目A的方式(完全相同),但是在这里我们没有编译错误。我们无法确定项目B或C之间的任何有意义的差异;如上所述,它们以相同的方式包括A.

感谢您的帮助, 斯泰恩

附:我使用的插件版本号为0.10.2.20100623

回答

2

已解决

最后,在苦恼几小时后,我找到了原因。 我专注于.classpath和.settings文件,但问题位于.project文件中。项目A中的这个文件在标签性质中输入后缺少:

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

添加此项解决了问题。

2

我以前经历过这种行为,并且在过去导入或检出单独的Maven项目时,它已经发生了。

前提条件:确保你有你看看多模块Maven项目之前安装m2extras:update site

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

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

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

+0

已经对+1进行了很好的清晰的说明;我确实没有安装额外功能,我会先做这件事,然后尝试第二个建议(我们的确有一个根源)。 – 2010-12-15 13:08:17

+0

嗨,我升级到m2eclipse v12并且还安装了额外功能。我通过导入父pom导入了所有项目。不幸的是,这并没有解决这个问题。第1步(更新配置)也没有帮助。更改.settings(当然不是svn)中的org.eclipse.wst.common.component是NA,因为这个未被正确引用的项目已经被正确引用了。然而,看看项目B的Maven依赖关系,我注意到项目A没有包含在内(但其他项目是C)。我猜想原因(和解决方案?)在这里,但我看不到它...... – 2010-12-17 09:04:09

+0

如果你已经确保项目B依赖项正确指定项目A的GAV,那么我建议使用mvn-依赖插件的分析目标或m2eclipse POM编辑器的依赖图视图作为下一个异味测试。 – 2010-12-17 13:35:38

相关问题