如果我有一个Maven项目,它显式依赖于 A 和 B版本2.0 和 A 具有对 B版本1.0 的传递依赖。较新的B版本会覆盖较旧的版本吗?
我使用了maven depencdy:resolve目标,看起来旧版本的 B 无法解决。如果 A 与较新版本的 B 不兼容怎么办?或者,如果 A 依赖于 B版本2.0 ,并且我的项目在运行依赖项后明确依赖 B版本1.0 :解决目标我那时看不到较新版本的 B 。那么如何解决这些依赖关系呢?
当我使用解决目标时,它会显示依赖性。但是,将在哪个阶段使用此依赖关系?编译,测试,运行时?
最佳答案
优先选择与您的依赖关系树的根更接近的版本。如果两个冲突版本在树中的深度相同,则第一个(从树的顶部开始)获胜。
那是完全愚蠢的规则吗?是的。它具有的唯一优点是,您始终可以通过将依赖版本声明为项目的直接依赖项来强制依赖的特定版本。
因此,在您的情况下,将使用B:2.0,因为它被声明为直接依赖项。如果A在B:2.0上无法正常工作,那么,可以在代码中使用B:1.0,或者选择另一个与A相同但又不会引起冲突的库。
关于java - 在Maven项目中,较新版本的依赖项会覆盖旧版本吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19754235/