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

时间:2015-02-20 09:06:17

标签: java maven dependency-management

我在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) 

2 个答案:

答案 0 :(得分:2)

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

从文档中摘录:

  

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

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

答案 1 :(得分:-1)

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