【发布时间】:2016-03-16 01:02:00
【问题描述】:
我可以将 Maven 配置为选择“最新”的冲突依赖项,而不是“最近的”吗?
“最新”是 Ivy 和其他明智的依赖管理器中的默认值,请参阅http://ant.apache.org/ivy/history/2.2.0/settings/conflict-managers.html
我发现“最近”策略很少是我想要的。
我使用的是 Maven 3.3.3,但如果需要,我可以切换版本。
我知道如何在个别冲突上覆盖 Maven 的选择,但我更愿意更改默认值,这样我就不必一次检测和修复每个冲突。
(参见the Maven docs“依赖中介”)
【问题讨论】:
-
如果你说你很少不想要是一种意见。据我所知,没有简单的方法可以改变这种行为......你可以做的是提供一个补丁来改变 Maven Core 中的行为......要检测这些事情,你可以使用强制规则来识别这种情况...... ..
-
This discussion 之前尝试将此功能添加到 Maven 值得一读。
-
谢谢,@heenenee。我现在明白为什么 Maven 在过去 10 年左右的时间里根本没有进化,它似乎完全奄奄一息。也许我会尝试将我的项目切换到 SBT,它具有最新的依赖冲突解决方案,并且可以消耗 Maven deps,并且受 IntelliJ 支持。
-
@Rich 我将讨论中最相关的部分提取为答案。我通常不会用“否”来回答问题,但我觉得在这种情况下这是有道理的。在继承源代码时,如果它是一个 Maven 项目,我通常会很高兴,因为构建很容易理解(很大程度上是因为 Maven 发展如此缓慢),但是我通常使用 Gradle 开始我自己的新项目。您应该使用最适合您和您的团队的方法;如果那是 SBT,那就去吧。
标签: java maven conflicting-libraries