我正在探索maven,目前正在使用Ant。我们在这里使用的应用程序有不同的模块。 现在,如果我向那些我可以解决版本冲突的依赖项添加依赖项。示例模块A具有版本1的依赖性。而模块B现在具有版本2的依赖性如果某人需要同时使用该模块,那么它将自动解析为更高版本的版本2.
我可以使用maven或任何命令的内部行为来解决版本冲突吗?
答案 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)