Maven第三方依赖包所依赖Guava包高低版本不同互不兼容的解决方案

       

        由于从maven3.0开始,maven将不重复引用同一个依赖包(同一groupId和artifactId)。Guava没有向后兼容,由其第三库再依赖guava后,极易再项目里造成jar冲突,真实头疼。不过方法总比困难多。

         以下解决方案是在引用的不同第三方包所依赖的Guava冲突背景下进行的。如果你可以简单的通过排除Guava包便可达到兼容的话,那这样最方便了。难就难在所引用的第三方包必须得引用,而它们又必须得用到高版本或低版本的包。

 

  解决方案1:

         如果可能的话,将冲突的第三方依赖包分开到不同的模块POM中(如果你的Maven项目架构是分模块书写的话),这样在编译运行的时候就不会有冲突问题。

 

 解决方案2:

        将冲突的一方第三方依赖包所有的依赖打包成一个整体。借用: maven-shade-plugin插件。

        作者是在使用大数据依赖包时和Swagger所带的guava包冲突。

        1. 建立一个新的maven项目

        2. pom.xml

         


  4.0.0
  rz.springfox
  springfox-swagger2-shade
  jar
  2.9.2
  springfox-swagger2-shade Maven Webapp
  http://maven.apache.org
  
  
   
		4.3.8.RELEASE
		2.9.2
	
  
  
  
		
			org.springframework
			spring-aop
		
		
			org.springframework
			spring-beans
		
		
			org.springframework
			spring-context
		
		
			org.springframework
			spring-core
		
		
			org.springframework
			spring-expression
		
		
	    
				io.springfox
				springfox-swagger2
				${swagger.version}
				
		
	
  
  
  
	
		
			
				org.springframework
				spring-framework-bom
				${spring.version}
				pom
				import
			
		
	
	
   
         
        
            
                org.apache.maven.plugins
                maven-deploy-plugin
                2.7
            
            
                org.apache.maven.plugins
                maven-shade-plugin
                3.1.0
                
                    false
                
                
                    
                        package
                        
                            shade
                        
                        
                             
                                
                                    com.google.guava
                                    springfox.guava
                                
                                
                                    com.google.common
                                    springfox.common
                                
                                
                            
                            
                                
                            
                        
                    
                
            
        
    
    
    
	
		
			nexus_plugin
			nexus_plugin
			http://maven.aliyun.com/nexus/content/groups/public/
			
				true
			
			
				true
			
		
	
	

	
		
			releases
			releases
			http://maven.aliyun.com/nexus/content/groups/public/
			
				true
			
			
				true
			
		
	
	
	
    
 	
 	    
 	        releases
	        Nexus Release Repository
	        http://maven.aliyun.com/nexus/content/repositories/releases/
 	    
	    
	        snapshots
	        Nexus Snapshot Repository
	        http://maven.aliyun.com/nexus/content/repositories/snapshots/
	    
	

配置说明:    

① 将swagger中依赖的guava包和其它第三方包冲突的包名重命名。

② 自定义新创建的maven项目的 groupId和artifactId,所创建的此maven包将发布到私服或本地供使用

③ 文件中私服地址已更换为阿里云的地址,使用者可替换。

④ 文件中设计涉及私服发包和本地安包,使用者可自行百度,或参考我的另一篇文章,Maven如何私服发包。

 

    

你可能感兴趣的:(java,maven,guava,冲突,swagger,java,maven)