Implementation:Datahub project Datahub Datahub Client Dependency
| Field | Value |
|---|---|
| Implementation Name | Datahub Client Dependency |
| Type | External Tool Doc |
| Status | Active |
| Last Updated | 2026-02-10 |
| Repository | Datahub_project_Datahub |
| Source File | metadata-integration/java/datahub-client/build.gradle (Lines 22-57)
|
Overview
The Datahub Client dependency configuration defines how the datahub-client artifact is built, what transitive dependencies it carries, and how consumers declare it in their Gradle or Maven projects. The artifact is published under the io.acryl group ID with the artifact ID datahub-client.
Source Reference
File: metadata-integration/java/datahub-client/build.gradle (Lines 22-57)
dependencies {
api project(':entity-registry')
api project(':metadata-integration:java:datahub-event')
implementation project(':metadata-integration:java:datahub-schematron:lib')
implementation(externalDependency.kafkaAvroSerializer) {
exclude group: "org.apache.avro"
}
implementation externalDependency.avro
implementation externalDependency.httpClient
constraints {
implementation('commons-collections:commons-collections:3.2.2') {
because 'Vulnerability Issue'
}
}
implementation externalDependency.awsS3
implementation platform(externalDependency.jacksonBom)
implementation externalDependency.jacksonDataBind
runtimeOnly externalDependency.jna
api externalDependency.slf4jApi
compileOnly externalDependency.lombok
annotationProcessor externalDependency.lombok
// VisibleForTesting
compileOnly externalDependency.guava
testImplementation externalDependency.testng
testImplementation externalDependency.mockito
testImplementation externalDependency.mockServer
testImplementation externalDependency.mockServerClient
testImplementation externalDependency.testContainers
testRuntimeOnly externalDependency.logbackClassic
// ASM for bytecode inspection in tests
testImplementation 'org.ow2.asm:asm:9.5'
}
Dependency Declaration
Gradle
dependencies {
implementation 'io.acryl:datahub-client:VERSION'
}
Maven
<dependency>
<groupId>io.acryl</groupId>
<artifactId>datahub-client</artifactId>
<version>VERSION</version>
</dependency>
Publication Configuration
The artifact is published to Maven Central via Sonatype OSSRH. The publication block (Lines 221-270 of build.gradle) defines:
| Property | Value |
|---|---|
| Group ID | io.acryl
|
| Artifact ID | datahub-client
|
| Description | DataHub Java client for metadata integration |
| License | Apache License, Version 2.0 |
| SCM URL | https://github.com/datahub-project/datahub.git
|
| Releases Repo | https://ossrh-staging-api.central.sonatype.com/service/local/staging/deploy/maven2/
|
| Snapshots Repo | https://ossrh-staging-api.central.sonatype.com/content/repositories/snapshots/
|
Transitive Dependencies
The following dependencies are exposed transitively (via api scope) to consumers:
| Dependency | Scope | Purpose |
|---|---|---|
entity-registry |
api | Entity type definitions and aspect registry |
datahub-event |
api | MetadataChangeProposalWrapper and event classes |
slf4j-api |
api | Logging facade |
The following dependencies are shaded into the shadow JAR (not exposed to consumers):
| Dependency | Purpose |
|---|---|
datahub-schematron |
Schema translation utilities |
kafka-avro-serializer |
Avro serialization for Kafka emitter |
avro |
Apache Avro data serialization |
httpClient |
Apache HTTP Client for REST communication |
jackson-databind |
JSON serialization/deserialization |
aws-s3 |
AWS S3 client for cloud storage |
jna |
Java Native Access (runtime only) |
Shadow JAR Configuration
The shadow JAR (Lines 130-200) relocates numerous third-party packages to avoid classpath conflicts:
com.fasterxml.jacksontodatahub.shaded.jacksonorg.springframeworktodatahub.shaded.org.springframeworkcom.google.commontodatahub.shaded.com.google.commonorg.apache.httptodatahub.shaded.org.apache.httporg.apache.kafkatodatahub.shaded.org.apache.kafkasoftware.amazon.awssdktodatahub.shaded.software.amazon.awssdk
The shadow JAR excludes slf4j and antlr from shading, allowing consumers to provide their own logging implementation.
I/O Contract
Input: A Gradle or Maven build file declaring the datahub-client dependency with a specific version.
Output: Access to the following SDK packages and classes:
datahub.client.v2.DataHubClientV2-- Main client entry pointdatahub.client.v2.entity.Dataset,Chart,Dashboard, etc. -- Entity buildersdatahub.client.v2.entity.HasTags,HasOwners,HasGlossaryTerms,HasDomains-- Trait interfacesdatahub.client.v2.operations.EntityClient-- CRUD operations clientdatahub.client.rest.RestEmitter-- REST-based metadata emission
Related
- Implements: Datahub_project_Datahub_Java_SDK_Dependency_Setup
- Related Implementation: Datahub_project_Datahub_DataHubClientV2_Builder
- Environment: Environment:Datahub_project_Datahub_Java_17_Backend_Environment