【发布时间】: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