解决Maven中库的不兼容版本的依赖关系

我在Maven-Java中遇到依赖问题。 我的问题是两个模块具有不同版本的依赖关系,并且这些版本不兼容。 我可以解决吗?

问题的一个例子

我有三个模块(MA,MB和MC)和两个库(LA和LB),LA有两个版本(v1和v2),它们不兼容

第一个模块MA包含主类,它取决于MB和MC

MB模块取决于LA v2。

MC模块取决于LB版本。

LB版本取决于LA v1。

最后,依赖树如下:

MA | - MB | | - LA (v2) | - MC | | - LB | | | LA (v1) 

我不知道你是否考虑过。 在Maven中存在一个名为Exclusions的东西。

从文档中提取:

由于maven 2.x可以传递地解析依赖关系,因此可能会将不需要的依赖项包含在项目的类路径中。 例如,您所依赖的项目可能尚未正确声明其依赖项集。 为了解决这种特殊的问题,maven 2.x已经纳入了明确的依赖性排除的概念。 排除项是针对POM中的特定依赖项设置的,并且针对特定的groupId和artifactId。 在构建项目时,该工件不会通过声明排除的依赖项添加到项目的类路径中。

在这里链接,也许它可以帮助您在pom.xml中实现配置 – > Maven Exclusions

这是一个Java问题,没有像OSGi这样的其他技术就没有解决方案