解决Elasticsearch和Phoenix、HBase的com.google.guava冲突

冲突原因

Elasticsearch 2.4.1 依赖com.google.guava18.0以上版本

Phoenix 和 HBase  依赖com.google.guava16.0以下版本

guava 17.0 为临界版本,做了较大改动,导致版本不兼容

常见报错

com.google.common.base.Stopwatch.()V from class org.apache.hadoop.hbase.zookeeper.MetaTableLocator

解决方案

ES官方方案

https://www.elastic.co/blog/to-shade-or-not-to-shade

方案原理

利用maven-shade-plugin,它可以把依赖的包打包进项目的jar,并且可以重新命名依赖包的包名。这样编译后,Elasticsearch使用的是重新命名的guava18.0包,不再依赖项目中引用的guava16.0版本。

具体实现

用Maven新建工程,只修改pom.xml文件




  4.0.0

  com.test.shade.elasticsearch
  testshadeelasticsearch
  1.0-SNAPSHOT

  testshadeelasticsearch
  http://www.example.com

  
    UTF-8
    1.7
    1.7
    2.4.1
  

  
    
      org.elasticsearch
      elasticsearch
      ${elasticsearch.version}
    
  
  
    
      
        org.apache.maven.plugins
        maven-shade-plugin
        2.4.1
        
          false
        
        
          
            package
            
              shade
            
            
              
                
                  com.google.guava
                  com.test.shade.elasticsearch.guava
                
                
                  org.joda
                  com.test.shade.elasticsearch.joda
                
                
                  com.google.common
                  com.test.shade.elasticsearch.common
                
                
                  com.google.thirdparty
                  com.test.shade.elasticsearch.thirdparty
                
              
              
                
              
            
          
        
      
    
  

   
    
      nexus-releases
      ng Release Repository
      http://maven.cning.com/content/repositories/releases/
    
    
      nexus-snapshots
      ng Snapshot Repository
      http://maven.cning.com/content/repositories/snapshots/
    
  



打包上传maven仓库

mvn clean package

mvn clean install

mvn clean deploy

项目引用



  com.google.guava
  guava
  16.0



    com.test.shade.elasticsearch
   testshadeelasticsearch
   1.0-SNAPSHOT
   
       
            org.elasticsearch
            elasticsearch
       

   

 

你可能感兴趣的:(elasticsearch)