0

Maven有“越接近越好”的la脚依赖冲突解决规则:如果一个库存在2个版本,则只保留最接近传递依赖树主干的一个,其他版本将从类路径中删除。这在所有由 maven 构建的项目中造成了普遍的不稳定。

我想从两个方面解决这个问题:

  1. 使用 JHades 之类的冲突检测分析器扫描类路径中的所有内容,并从类加载器中报告版本冲突

  2. 使用花哨的类加载器根据情况自定义类路径,以便在正确的时刻使用正确的版本。这也是OSGi采用的方法

为了实现它们中的任何一个,我需要覆盖 maven,以便它将进一步版本的 jar 附加到各种生命周期中的类路径中(特别是“测试”)。我如何实现这一目标?

更新:我意识到 maven 是一个旧产品,并不是为具有数千个依赖项的大型项目设计的。因此,如果您在 Gradle、Pants、Buck、sbt 或任何深奥的构建工具中有解决方案,我仍然会接受它作为有效答案。

4

0 回答 0