Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Incomplete
-
0.90.0
-
None
-
None
Description
Clients who wish to use thrift, protobuf, avro and who include our classpath on their classpath run into incompatibilities, for example my client might depend on protobuf 2.1 but we ship 2.3.0, if there are any incompatible APIs then I won't be able to run my stuff by including HBase's classpath, nor will I be able to use bin/hbase to run my stuff.
We can help by using maven shade to include then rename some dependencies into the hbase*.jar itself, thus ensuring that they won't leak out. We could also build an all inclusive JAR that includes ALL our core dependencies, although we probably might want to skip including Hadoop since that is frequently switched out. Then a user would be able to include hbase*.jar and run.
This might not play well with the maven build and transitive export thing, we should probably think about it a bit more.
My initial list was:
- avro
- protobuf
- thrift