【问题标题】:M2Eclipse can't find dependencies when they are projects in the same workspace当它们是同一工作区中的项目时,M2Eclipse 找不到依赖项
【发布时间】:2011-05-25 21:41:59
【问题描述】:

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

我们的工作区中有大约 30 个项目,但为了清楚起见,我们假设只有 2 个:A 和 B。

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

为了让事情变得更奇怪,我们还有项目 C,它也依赖于项目 A(与 B 完全相同),但这里我们没有编译错误。我们无法确定项目 B 或 C 之间的任何有意义的区别;如前所述,它们以相同的方式包含 A。

感谢您的帮助, 斯蒂金

附:我使用的是 0.10.2.20100623 版本的插件

【问题讨论】:

    标签: maven-2 eclipse-plugin m2eclipse


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 已经 +1 以获得清晰明了的解释;我确实没有安装额外的东西,我会先这样做,然后再尝试你的第二个建议(我们确实有一个 root pom)。
    • 嗨,我升级到 m2eclipse v12 并安装了附加功能。我通过导入父 pom 来导入所有项目。不幸的是,这并没有解决问题。步骤 1(更新配置)也没有帮助。更改 .settings 中的 org.eclipse.wst.common.component (当然不在 svn 中)是不适用的,因为其中已经正确引用了未找到的项目。然而,查看项目 B 的 maven 依赖项,我注意到项目 A 不包括在内(但其他项目如 C 是)。我猜原因(和解决方案?)就在这里,但我看不到它......
    • 如果您已经确保项目 B 依赖项完全正确地指定项目 A 的 GAV,那么我建议使用 mvn-dependency-plugin 的分析目标或 m2eclipse POM 编辑器的依赖关系图视图作为下一个气味测试。
    【解决方案2】:

    已解决

    终于,经过几个小时的痛苦,我找到了原因。 我专注于 .classpath 和 .settings 文件,但问题出在 .project 文件中。项目 A 中的此文件在标签性质中缺少以下条目:

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

    添加这个解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多