2011-11-22 141 views
4

我有一个“主项目”,它使用几个“模块”。这些模块位于pom.xml中,但我也将模块的代码作为Eclipse中的项目。我在“Properties | Project References”和“Properties | Java Build Path”中都将这些模块定义为项目依赖项。我还确保所有Eclipse项目都位于Java Build Path中的“Order and Export”的顶部。在Eclipse,maven的依赖是压倒一切的项目依赖

主项目是不承认的变化蚀内的模块。当我按F3查看代码时,它会从我的.m2目录打开java源代码。显然,它忽略了我的Eclipse项目。我错过了一些设置?我该怎么办?

回答

3

如果你使用Maven的时候,你很可能要承诺的Maven。即使您使用特定于Eclipse的依赖关系配置Eclipse,只要使用Maven更新项目配置,它就会完全重写配置。

我强烈建议将您的任何其他项目的依赖关系,成可作为Maven依赖启用Maven的项目。

在特定情况下(通过使用Maven的模块),这意味着要确保每个模块被导入到Eclipse作为启用M2E的项目。 m2e将自动连接模块和其他相关项目之间的依赖关系。

6

您不需要将依赖项目添加到项目引用中(至少在使用m2eclipse插件时),只需将它们作为依赖关系添加到您的主项目的pom.xml中即可。自从我开始在Eclipse中使用Maven以来,我没有必要触摸构建路径。

确保您已通过右键单击项目根目录 - > Maven - >启用工作空间分辨率来启用插件的Workspace分辨率。如果它显示“禁用工作区分辨率”,则它已启用。您可能还需要在同一菜单下运行“更新项目配置”。

通过这种方式,当您在Eclipse中运行主项目时,对其他项目所做的任何更改都将对主服务器“可见”(并且实际上在运行时甚至可以在其他项目中使用热交换)。

+0

奇怪的是,启用和禁用工作区分辨率都在主项目的菜单上。我点击启用,它重建,但现在打破了一些实际存在于eclipse但不是maven的类。我觉得有些东西真的很糟糕。还有什么提示? – User1

+0

首先尝试清洁整个工作区。如果这没有帮助,而不是猜测在不同项目的配置中可能会出现什么问题,我会建议如下:从文件 - >开关工作区 - >其他,根据需要复制设置,然后导入所有的使用文件 - >导入... - > Maven - >现有Maven项目将项目投影到新工作区。选择浏览并导航到旧工作区的根目录,然后单击确定。选择所有po​​ms,然后单击完成。现在,您拥有了一个包含所有项目的“干净”工作区,并且希望工作区分辨率能够即装即用。 – esaj

+0

这是一个好主意,但它没有奏效。主项目与模块有不同的目录..你认为这会打破一切吗? – User1

0

林抓我的头,为什么你需要定义为您的顶级项目依赖的模块。你是否试图避免在模块级定义(交叉)依赖关系?在任何情况下,按照其他建议,首先把你的依赖关系在正确的地方在你的POM,然后要么运行

mvn eclipse:clean eclipse:eclipse 

更新您的Eclipse设置,或者更好的是,确保m2eclipse安装和导入你的Maven项目直接进入IDE。

+1

当前插件称为“m2e”,可从默认更新站点获取。 – Puce

+0

m2e是我上次查看Sonatype网站时m2eclipse的缩写。 – Perception

+0

这不是一个Sonatype的项目了,它现在是一个Eclipse项目:“Sonatype的已完成项目的m2eclipse的过渡到Eclipse 请去这个网址M2E信息:http://eclipse.org/m2e” – Puce