Copying the description of
ZOOKEEPER-1003 from Jean-Pierre König (jpkoenig) here:
This feature request applies to ZooKeeper, HBase, Hadoop and maybe other
projects. Currently, to use one of these projects, I need to include one big
jar file as a dependency, that
contains the complete server code,
contains much more code then I use
and most annoyingly depends on many other jars, that are mostly needed for the
server but not for the client library.
Thus when using maven and including any of the mentioned projects, the
dependency graph of my projects grows unnecessarily large.
This is a severe problem for at least two reasons:
The probability of conflicting dependencies (versions) gets boosted.
Especially for mapreduce jobs depending on HBase or Zookeeper, the jars sent to the
clusters grow to beyond 20-30MB of unnecessary dependencies.
One could work around the problem with maven dependency exclusions, but this may lead to unpredictable runtime errors (ClassNotFound) since dependency management is not save on compile time only.
I wish we could solve the underlying issue at the root with a client library.