【问题标题】:Why does Maven's dependency mediation not choose the newest version?为什么Maven的依赖中介不选择最新版本?
【发布时间】:2015-10-09 12:15:06
【问题描述】:

如果 Maven 项目可传递地使用库的多个版本,Maven 的依赖中介将根据声明中最接近的定义和顺序进行仲裁。 (见docs。)

例如如果 A -> B -> X-1.0.0 和 A -> B -> C -> X-2.0.0,那么建筑 A 将使用 X-1.0.0。

为什么?可以合理地假设 X-2.0.0 添加了一些 C 使用的方法,因此运行 A 可能会产生运行时异常。选择最新版本不是更有意义吗? (我知道你可以手动指定。)

【问题讨论】:

    标签: maven dependency-management


    【解决方案1】:

    假设 2.x 版本已删除 A 或 B 使用的某些方法也是合理的。Maven 无法知道在这种情况下哪个是正确的,并决定最近的定义是决胜局。如您所见,如果开发人员不喜欢此选择,他/她可以添加直接依赖项。

    【讨论】:

      【解决方案2】:

      我看不出有什么好的理由这样做。它似乎造成的麻烦比它节省的更多。

      Ivy 的默认依赖中介策略是“最新的”,而不是“最近的”,它似乎在几乎所有情况下都非常有效。见http://ant.apache.org/ivy/history/2.2.0/settings/conflict-managers.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-27
        • 2014-10-13
        • 2016-03-16
        • 1970-01-01
        • 2018-04-16
        • 1970-01-01
        • 2016-09-18
        • 2022-06-23
        相关资源
        最近更新 更多