2015-10-06 140 views
7

当我在依赖关系树中多次列出一个依赖关系时,即使该依赖关系的所有版本都相同,Eclipse也会说(在POM的依赖关系层次结构标签中),除了一个以外,其余都是“与XXX)“。组ID,工件ID和版本将全部相同。为什么Eclipse Maven表示相同版本的依赖关系是冲突的?

下面是一个随机选择依赖关系的简单示例。注意maven-model和maven-artifact。

maven-core dependency conflict same versions

我使用Eclipse火星(4.5.0)

这似乎并没有对任何事情有任何影响,除了在UI中引起误解的消息。在整个地方看到“因冲突而被忽略......”是非常令人讨厌的,特别是如果我想看到真正的冲突。

回答

8

Eclipse的“Dependency Hierarchy”选项卡由M2Eclipse插件填充。不幸的是,这似乎是在M2Eclipse插件source code中硬编码的。无论什么原因依赖被省略(重复,版本冲突...),M2Eclipse插件将添加“与冲突省略”标签。

请注意,这不是maven-dependency-plugintree目标的情况,此选项卡从中模拟输出。默认情况下,命令mvn dependency:tree不会显示被忽略的依赖项。如果verbose标志设置为true,那么输出将显示每个相关性,这些相关性在以下情况下被省略:与另一个相同;与其他版本和/或范围冲突;并将一个循环引入到依赖关系树中。

我找不到这个错误,所以你可以提交一个增强请求,through their Bugzilla,要求插件更符合dependency:tree的输出(例如显示一个依赖被省略的真正原因,而不是当前的默认值)并添加一个选项以在详细模式和非详细模式之间切换。

+1

嗯,该死。感谢您的链接,并向我展示依赖:树目标。顺便说一句,如果任何人都好奇,我会看到他们在哪里更改了代码(我忘了提及它没有在Eclipse的早期版本中这样做,这就是我期望它的行为不同):https://github.com/eclipse/m2e-core/commit/85527e1eb1638654d8f33a7106900ef9d1158bc2#diff-96f1c3968edb48388ea2673b2dd6e8e4L809,看起来像他们删除了平等版本检查以及许多其他更改以提高性能。 – tobii

+0

@tobii很好找! – Tunaki