Mark hbase and hadoop is using the old guava. Is there a way I can use the latest guava in my code and let hadoop and hbase use the old guava.
On 20-Jan-2018 1:19 PM, "Mark Prins" <[email protected]> wrote: > It seems that the guava versions are not API compatible, so shading is > unlikely to help. You will need to downgrade to a compatible version of > guava or get the other projects to upgrade. > -M > > Op 20 jan. 2018 07:51 schreef "Debraj Manna" <[email protected]>: > > I have posted more details in stackoverflow > <https://stackoverflow.com/questions/48140339/guava-23-5- > conflict-with-hbase-testing-util-1-2>. > I could not add all the details here because of size limitation. > > In a project I am using Guava 23.5 but some of the dependencies (hadoop & > hbase) are using old Guava 14. This is causing an exception during runtime > > As mentioned here <https://www.elastic.co/blog/to-shade-or-not-to-shade> I > tried to shade the Hbase dependency in a new module named shadedcdh. > pom.xml > looks like below > > ?xml version="1.0" encoding="UTF-8"?> > > <project xmlns="http://maven.apache.org/POM/4.0.0" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 > http://maven.apache.org/xsd/maven-4.0.0.xsd"> > <parent> > <artifactId>main</artifactId> > <groupId>com.vnera</groupId> > <version>0.001-SNAPSHOT</version> > </parent> > <modelVersion>4.0.0</modelVersion> > > <artifactId>shaded-cdh</artifactId> > <packaging>jar</packaging> > > <dependencies> > <dependency> > <groupId>org.apache.hbase</groupId> > <artifactId>hbase-testing-util</artifactId> > <version>1.2.0-cdh5.7.0</version> > </dependency> > <dependency> > <groupId>org.apache.hadoop</groupId> > <artifactId>hadoop-client</artifactId> > <version>${hadoop.version}</version> > </dependency> > <dependency> > <groupId>org.apache.hadoop</groupId> > <artifactId>hadoop-common</artifactId> > <version>${hadoop.version}</version> > </dependency> > <dependency> > <groupId>org.apache.hbase</groupId> > <artifactId>hbase-client</artifactId> > <!-- This must stay in sync with hbase version we deploy. --> > <version>1.2.0-cdh5.7.0</version> > </dependency> > </dependencies> > > <build> > <plugins> > <plugin> > <groupId>org.apache.maven.plugins</groupId> > <artifactId>maven-shade-plugin</artifactId> > <version>2.4.1</version> > <executions> > <execution> > <phase>package</phase> > <goals> > <goal>shade</goal> > </goals> > <configuration> > <relocations> > <relocation> > <pattern>com.google.common</pattern> > > <shadedPattern>shaded.com.google.common</shadedPattern> > </relocation> > </relocations> > <transformers> > <transformer > implementation="org.apache.maven.plugins.shade.resource. > ManifestResourceTransformer" > /> > </transformers> > </configuration> > </execution> > </executions> > </plugin> > </plugins> > </build> > > <repositories> > <repository> > <id>cloudera</id> > <url>https://repository.cloudera.com/artifactory/ > cloudera-repos/ > </url> > </repository> > </repositories> > </project> > > I excluded hbase and hadoop dependency from my project and added > shadedcdh as dependency. But this is still giving me the same > exception. The dependency tree I have posted in the stackoverflow. I > could not post here because of size limitation. Can someone let me > know how can I avoid the conflict? >
