kylin-jdbc packages many dependencies (calcite-core, guava, jackson, etc) into an uber jar, which could cause problems when user tries to integrate kylin-jdbc into their own application.
I suggest making the following changes to packaging:
- remove calcite-core dependency
calcite-avatica is sufficient as far as I know.
- remove guava dependency
The only place kylin-jdbc uses guava is ImmutableList.of(metaResultSet) in KylinMeta.java, which can be simply replaced with Collections.singletonList(metaResultSet).
- remove log4j, slf4j-log4j12 dependencies
As a library, kylin-jdbc should only depend on slf4j-api. Which underlying logging framework to use should be a deployment-time choice made by user. This means we should revert https://issues.apache.org/jira/browse/KYLIN-1160
- relocate all dependencies to "org.apache.kylin.jdbc.shaded" using maven-shade-plugin
This includes calcite-avatica, jackson, commons-httpclient and commons-codec. Relocating should help to avoid class version conflicts.
I'll submit a patch for this, discussions are welcome~