当前位置:  开发笔记 > 编程语言 > 正文

Maven将依赖调解策略设置为最新而不是最近

如何解决《Maven将依赖调解策略设置为最新而不是最近》经验,为你挑选了1个好方法。

我可以将Maven配置为选择冲突的"最新"依赖,而不是"最近"吗?

"最新"是Ivy和其他合理的依赖管理器的默认值,请参阅http://ant.apache.org/ivy/history/2.2.0/settings/conflict-managers.html

我发现"最近"的策略很少是我想要的.

我正在使用Maven 3.3.3,但如果需要我可以切换版本.

我知道如何在个别冲突上覆盖Maven的选择,但我更愿意更改默认值,这样我就不必一次检测并修复每个冲突.

(参见关于"依赖调解" 的Maven文档)



1> heenenee..:

在解决版本冲突时,是否可以将Maven配置为自动使用"最新"版本的依赖项而不是"最近"版本?

,您无法将Maven的依赖关系中介策略配置为最近的除外.

之前已经提出了添加可配置的依赖关系中介策略,但最终被放弃了,因为该提案涉及更改POM XSD,这在多年来没有发生过.

为什么Maven使用最近的策略作为默认策略?

Maven青睐最近的策略有两个原因:

    轻松覆盖单个冲突:对于任何特定的冲突依赖项,您可以在自己的POM中指定其版本,并且该版本将变为最接近的版本.

    可重现的构建: 依赖关系图中任何位置的版本范围都可能导致构建不可重现."最新"的调解策略会放大版本范围对构建再现性的负面影响.

但我真的想要一个不同的依赖调解策略.我能做什么?

这些是您最好的选择:

    制作Maven扩展:使用"最近"策略由NearestVersionSelector inMavenRepositorySystemUtils指定.您可以创建自己的Maven扩展,定义您自己的扩展,VersionSelector实现您选择的策略,然后在afterSessionStart扩展的方法中,DependencyGraphTransformer将会话替换为使用您的自定义的会话VersionSelector.

    迁移到另一个构建工具:显然.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有