thanks for the explanation, Mike. Boris On Wed, Jan 2, 2019 at 6:32 PM Mike Percy <[email protected]> wrote:
> Hi Boris, > kudu-client is a client API library designed to be embedded in a client > application, and it specifies its dependencies via a Maven pom. Typically > one would only want one version of a given dep on the classpath at runtime > and so shipping a fat jar usually isn't done for client libraries. > > We shade all dependencies that are not exposed via the public API except > slf4j and related bindings since those are typically provided by the > application (e.g. slf4j-log4j). Since async appears in the public Kudu > Client API we can't shade it. > > kudu-client-tools is not a library but a set of command-line tools, so it > has to carry all of its dependencies in the jar. > > I'm not sure how most people handle dependency management in the Groovy > world, but a quick Google search turned up Grape > <http://docs.groovy-lang.org/latest/html/documentation/grape.html>, so > maybe that's worth looking into. > > Regards, > Mike > > > On Wed, Jan 2, 2019 at 12:37 PM Boris Tyukin <[email protected]> > wrote: > >> ok we just figured out that we need another jar - kudu-client-tools.jar. >> that one bundled with a proper version async lib and slf4j-api. >> >> slf4j-simple.jar has to be added separately but you do not have to do it >> if it is okay to suppress kudu client logs. >> >> kudu-client.jar and kudu-client-tools.jar are symlinked to a proper >> version of jars for CDH parcel. >> >> /opt/cloudera/parcels/CDH/lib/kudu/kudu-client.jar >> /opt/cloudera/parcels/CDH/lib/kudu/kudu-client-tools.jar >> /opt/cloudera/parcels/CDH/jars/slf4j-simple-1.7.5.jar >> >> >> >> On Wed, Jan 2, 2019 at 2:44 PM Boris Tyukin <[email protected]> >> wrote: >> >>> Hi guys, >>> >>> sorry for a dumb question but why kudu-client.jar does not include async >>> and slf4j-api and slf4j-simple libs? I need to call Kudu API from a simple >>> groovy script and had to add 3 other jars explicitly. >>> >>> I see these libs were excluded on purpose: >>> https://github.com/apache/kudu/blob/master/java/kudu-client/build.gradle >>> >>> Kafka client, for example, is a single jar. >>> >>> My challenge now which version of these libs to pick, how to support >>> them so they won't break in future etc. >>> >>> Even on CDH cluster, while kudu client is shipped with parcel, one has >>> to know exact versions of other 3 jars for client to work. >>> >>> Maybe I am missing something here and there is an easy way, especially >>> on CDH since it ships already with Kudu. >>> >>> Boris >>> >>
