共有四种解决方式:
一、第一声明优先原则:
在pom.xml配置文件中,若是有两个名称相同版本不一样的依赖声明,那么先写的会生效。
因此,先声明本身要用的版本的jar包便可。
二、路径近者优先:
直接依赖优先于传递依赖,若是传递依赖的jar包版本冲突了,那么能够本身声明一个指定版本的依赖jar,便可解决冲突。
三、排出原则:
传递依赖冲突时,能够在不须要的jar的传递依赖中声明排除,从而解决冲突。
例子:spring
<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.3.24</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </exclusion> </exclusions> </dependency>
四、版本锁定原则(最常使用)
在配置文件pom.xml中先声明要使用哪一个版本的相应jar包,声明后其余版本的jar包一概不依赖。解决了依赖冲突。
例子:apache
<properties> <spring.version>4.2.4.RELEASE</spring.version> <hibernate.version>5.0.7.Final</hibernate.version> <struts.version>2.3.24</struts.version> </properties> <!-- 锁定版本,struts2-2.3.2四、spring4.2.四、hibernate5.0.7 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> </dependencies> </dependencyManagement>