【问题标题】:Maven build is successful, Eclipse detects cycle in dependenciesMaven构建成功,Eclipse检测依赖中的循环
【发布时间】:2012-02-13 07:39:55
【问题描述】:

我正在处理一个大型项目,该项目由许多由 maven 管理的小型项目(大约 140 个)组成。每个单独的项目都有一个主 pom 和一个 pom。

现在我引入了 2 个新的小项目 A 和 B,它们的依赖关系为 A -> B。此外,B 依赖于另一个现有项目 C,因此 B -> C。A 被另一个项目 D 使用,即(如据我所知)独立于 C。我不确定,因为结构非常复杂,我不想整天坐在那里筛选 poms。

这意味着我有一个这样的依赖图:D -> A -> B -> C

当我在 maven(全新安装)中构建主 pom 时,它成功完成。生成 Eclipse 项目文件的 eclipse:eclipse 目标也是如此。当我在 Eclipse 中刷新项目时,它会重建所有内容并以错误“在项目的构建路径中检测到循环...”结束。此错误发生在 140 个项目中的大约 30 个中。当然 Eclipse 并没有告诉我这个循环是什么样的......

maven 怎么可能没有检测到依赖项中的循环,而 eclipse 可以呢?我以为 Maven Eclipse 插件只是将 pom 中的依赖项映射到 Eclipse .project 和 .classpath 文件?

Maven 不抱怨循环的事实告诉我没有依赖 C -> D。

【问题讨论】:

  • 重要的安全提示。 Maven 命令行检测一个反应器内的循环。如果仅通过激活配置文件来公开循环,那么您的命令行构建将不会报告错误,而您的 Eclipse 构建可能会报告错误。如果您尝试对此进行调试,请确保激活所有配置文件以包含您的所有模块(例如,mvn -Pcore,buildtools dependency:tree),否则您可能会错过问题。

标签: eclipse maven dependencies project cycle


【解决方案1】:

您的项目中可能有以前的 Eclipse 设置,请尝试以下步骤:

  1. 从 Eclipse 中删除所有项目。
  2. 运行 'mvn clean eclipse:clean;'从控制台或从所有项目文件夹中删除所有隐藏文件:.project、.classpath、.wtpmodules、org.eclipse.core.resources.prefs、...
  3. 将项目重新导入 Eclipse

这可能会解决问题!

【讨论】:

    【解决方案2】:

    我有相同的症状,但没有实际的 maven 循环。我在 eclipse Indigo 中以一种变通方法处理了这个问题:我关闭并删除了报告此错误的 eclipse 项目(不删除构成项目的文件),然后通过将源文件导入到我的带有“文件->导入...->Maven->现有 Maven 项目”的工作区。这样就解决了。

    【讨论】:

      【解决方案3】:

      您可能与范围测试或运行时有依赖关系。 Maven 只在编译阶段寻找循环。 Eclipse 或 m2e 在作用域上没有不同的依赖关系。

      【讨论】:

      • 啊!我忘记将新项目作为模块包含在主 pom.xml 中。所以不知何故,这导致 Maven 找不到循环。当我将模块定义放入 maven 时也抱怨......幸运的是 maven 告诉我循环在哪里以及图表的样子。我将问题确定为旨在解耦事物的接口。这需要在一个单独的项目中。现在循环被打破了,事情已经解决了:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多