【发布时间】:2017-05-25 01:25:13
【问题描述】:
m2eclipse 的行为让我发疯了,在看了十几篇文章之后,我觉得我失去了一些东西。我正在使用 Eclipse Neon.2 (4.6.2) 和 m2e 插件 1.7.0.20160303-1933。
我有一个非常简单的项目结构(实际上它更复杂,但即使是最简单的也行不通),看起来像这样:
- project A
- (dependes on) project B
两个项目都在同一个 Eclipse 工作区中。这两个项目都作为 Maven 项目导入。
Eclipse 可以解决依赖关系并在 IDE 中将项目显示为“OK”(没有错误),但是如果我尝试 Run As > Maven build (goal: compile) project A,maven 会失败,说找不到项目 B 依赖。
我没有在我的本地存储库上安装项目 B,因为我知道 m2e 可以直接在工作区中找到它们,因此,我在源代码中所做的任何更改都会自动反映。我的假设对吗?还是我必须先安装所有项目才能通过 Eclipse 运行它?这将是非常令人失望的。
我也尝试过:
- 再次对项目禁用/启用 Maven 特性.. 结果相同;
- mvn ecrise:clean,刷新项目,更新 maven 项目.. 相同 结果;
- 检查了所有groupId、artifactId、version..都OK;
- 通过 Maven 删除并添加依赖项 > Add Dep.. 结果相同;
- 如果项目显示为 Eclipse 项目图标,请在 POM 视图中进行检查。是的;
顺便说一句,如果我尝试在命令行中构建(mvn compile)项目,我会收到相同的错误(但我看到它符合预期,因为项目 A 尚未安装并且 maven(在命令行中)没有'不知道我的工作空间。我错了吗?
编辑:我的理解来自Sonatype link 声明:
您可以配置项目以解决工作空间中的依赖关系。 这具有改变 Maven 定位依赖项的方式的效果 文物。 如果项目配置为从 工作区,这些工件不需要存在于您的本地 存储库。
【问题讨论】:
-
您应该做的第一个测试是尝试在命令行上使用 Maven 运行您的整个项目构建...。如果一切正常,请返回 Eclipse...
-
@khmarbaise 如果这是要走的路,什么是 m2e 工作区依赖解析实用程序?
-
我不明白你的意思,因为你需要先在命令行上检查你的构建,如果你的构建是好的......或者不是......然后他们将它导入到 Eclipse 中......顺便说一句:不要使用
eclise:clean等,因为 M2E 会更好地处理... -
@khmarbaise 我编辑了我的问题以使其更清楚。我的观点是:Eclipse 可以使用工作区项目作为依赖项,命令行中的 mvn 不能。
-
工作区分辨率应该如您所愿。确保未禁用工作区分辨率(全局或给定项目)并且 group:artifact:version 完全匹配(包括 SNAPSHOT 等)。此外,请确保在您尝试构建项目 A 之前构建项目 B。
标签: eclipse maven m2eclipse m2e