如何解决不同版本之间的依赖关系

时间:2014-11-26 10:35:12

标签: maven version

我正在探索maven,目前正在使用Ant。我们在这里使用的应用程序有不同的模块。 现在,如果我向那些我可以解决版本冲突的依赖项添加依赖项。示例模块A具有版本1的依赖性。而模块B现在具有版本2的依赖性如果某人需要同时使用该模块,那么它将自动解析为更高版本的版本2.

我可以使用maven或任何命令的内部行为来解决版本冲突吗?

2 个答案:

答案 0 :(得分:0)

Maven通过使用最近的传递依赖声明来“解决”这个问题。

e.g。

A - > X - > externalLib 2.0 B - > externalLib 1.0

C - > A,B将导致使用externalLib 1.0,因为1.0的声明(在B上)比A更接近A和X 如果它们具有相同的距离,则POM文件中的位置决定。

这通常不是您想要的那种“解决方案”。由于它们可能不兼容,最好明确选择一个版本的手册并在C的pom中声明这个版本

C - > externalLib 2.1

注意,如果没有与X和B兼容的版本,则没有解决方案,并且Java不支持在一个类加载器中使用同一个库的多个版本。在这种情况下,你应该考虑使用OSGi或类似的。

答案 1 :(得分:0)