Maven解决依赖版本冲突的四个原则

1 依赖版本冲突

    当我们在pom.xml文件中添加了spring-context以及struts-spring-plugin的依赖后,这时会出现其他的jar包,称之为依赖传递,而添加不同的依赖后,可能会产生版本的冲突,如下所示:

Maven解决依赖版本冲突的四个原则_第1张图片

2 四个原则

2.1 第一声明者优先原则

    在pom.xml文件中定义依赖,以首先定义的依赖为基准
    比如当我们同时定义了spring-bean的两个版本,那么首先定义的4.2.4版本将成为依赖的基准


  
  	
  		org.springframework
  		spring-context
  		4.2.4.RELEASE
  	
   

  	
  		org.apache.struts
  		struts2-spring-plugin
  		2.3.24
  	

2.2 路径近者优先原则

    也就是说当我们在pom.xml文件中单独添加了spring-bean的依赖,而struts-spring-plugin依赖于spring-bean,struts-spring-plugin与我们单独所定义的spring-bean是同级的,因此会以单独定义的bean依赖为基准。(也就是自己添加的jar包

        
  		org.springframework
  		spring-beans
  		4.2.4.RELEASE
  	

2.3 排除依赖原则

    比如在添加struts-spring-plugin约束时,排除spring-bean,如下所示:

      
  		org.apache.struts
  		struts2-spring-plugin
  		2.3.24
  		
  		  
  		    org.springframework
  		    spring-beans
  		  
  		
  	

2.4 版本锁定原则

    面对众多的依赖,版本锁定这一种方式不需要考虑依赖的路径、声明优化等因素,可以直接锁定所依赖jar包的版本,锁定后不会考虑声明顺序及路径。下面以锁定Struts2、Spring、Hibernate版本为例:

       
		4.2.4.RELEASE
		5.0.7.Final
		2.3.24
	

	
	
		
		    
			    org.apache.struts
			    struts2-core
			    ${struts.version}
		    
			
				org.springframework
				spring-context
				${spring.version}
			
		    
			    org.hibernate
			    hibernate-core
			    ${hibernate.version}
		    
        
    

 

你可能感兴趣的:(Maven)