mirror of
https://github.com/datahub-project/datahub.git
synced 2025-06-27 05:03:31 +00:00
255 lines
9.5 KiB
Groovy
255 lines
9.5 KiB
Groovy
plugins {
|
|
id("com.palantir.git-version") apply false
|
|
id 'java-library'
|
|
id 'com.gradleup.shadow'
|
|
id 'signing'
|
|
id 'io.codearte.nexus-staging'
|
|
id 'maven-publish'
|
|
}
|
|
|
|
apply from: "../../../gradle/coverage/java-coverage.gradle"
|
|
apply from: "../versioning.gradle"
|
|
import org.apache.tools.ant.filters.ReplaceTokens
|
|
|
|
|
|
jar {
|
|
if (project.hasProperty('archiveAppendix')) {
|
|
archiveAppendix.set(project.archiveAppendix)
|
|
}
|
|
archiveClassifier = "lib"
|
|
}
|
|
|
|
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 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
|
|
}
|
|
|
|
task copyAvroSchemas {
|
|
dependsOn(':metadata-events:mxe-schemas:renameNamespace')
|
|
copy {
|
|
from file('../../../metadata-events/mxe-schemas/src/renamed/avro/com/linkedin/mxe/MetadataChangeProposal.avsc')
|
|
into file('./src/main/resources')
|
|
}
|
|
}
|
|
|
|
compileJava.dependsOn copyAvroSchemas
|
|
|
|
|
|
// Add Python environment validation task
|
|
task validatePythonEnv(dependsOn: [":metadata-ingestion:installDev"]) {
|
|
doFirst {
|
|
def venvPath = System.getProperty('python.venv.path', '../../../metadata-ingestion/venv')
|
|
def isWindows = System.getProperty('os.name').toLowerCase().contains('windows')
|
|
def pythonExe = isWindows ? "${venvPath}/Scripts/python.exe" : "${venvPath}/bin/python"
|
|
|
|
def result = exec {
|
|
commandLine pythonExe, "-c", "import sys; print(sys.executable)"
|
|
ignoreExitValue = true
|
|
standardOutput = new ByteArrayOutputStream()
|
|
errorOutput = new ByteArrayOutputStream()
|
|
}
|
|
|
|
if (result.exitValue != 0) {
|
|
throw new GradleException("Python virtual environment not properly set up at ${venvPath}")
|
|
}
|
|
}
|
|
}
|
|
|
|
test {
|
|
// to avoid simultaneous executions of tests when complete build is run
|
|
mustRunAfter(":metadata-io:test")
|
|
useJUnit()
|
|
// Add Python environment configuration
|
|
dependsOn validatePythonEnv
|
|
dependsOn tasks.getByPath(":metadata-ingestion:installDev")
|
|
systemProperty 'python.venv.path', System.getProperty('python.venv.path', '../../../metadata-ingestion/venv')
|
|
finalizedBy jacocoTestReport
|
|
}
|
|
|
|
task checkShadowJar(type: Exec) {
|
|
commandLine 'sh', '-c', 'scripts/check_jar.sh'
|
|
}
|
|
|
|
shadowJar {
|
|
zip64 = true
|
|
if (project.hasProperty('archiveAppendix')) {
|
|
archiveAppendix.set(project.archiveAppendix)
|
|
}
|
|
archiveClassifier = ''
|
|
// preventing java multi-release JAR leakage
|
|
// https://github.com/johnrengelman/shadow/issues/729
|
|
exclude('module-info.class', 'META-INF/versions/**',
|
|
'**/LICENSE', '**/LICENSE*.txt', '**/NOTICE', '**/NOTICE.txt', 'licenses/**', 'log4j2.*', 'log4j.*')
|
|
dependencies {
|
|
exclude(dependency("org.slf4j::"))
|
|
exclude(dependency("antlr::"))
|
|
exclude("org/apache/commons/logging/**")
|
|
}
|
|
mergeServiceFiles()
|
|
// we relocate namespaces manually, because we want to know exactly which libs we are exposing and why
|
|
// we can move to automatic relocation using ConfigureShadowRelocation after we get to a good place on these first
|
|
relocate 'org.springframework', 'datahub.shaded.org.springframework'
|
|
relocate 'com.fasterxml.jackson', 'datahub.shaded.jackson'
|
|
relocate 'org.yaml', 'datahub.shaded.org.yaml' // Required for shading snakeyaml
|
|
relocate 'net.jcip.annotations', 'datahub.shaded.annotations'
|
|
relocate 'javassist', 'datahub.shaded.javassist'
|
|
relocate 'edu.umd.cs.findbugs', 'datahub.shaded.findbugs'
|
|
relocate 'org.antlr', 'datahub.shaded.org.antlr'
|
|
//relocate 'antlr', 'datahub.shaded.antlr'
|
|
relocate 'com.google.common', 'datahub.shaded.com.google.common'
|
|
relocate 'org.apache.commons.codec', 'datahub.shaded.org.apache.commons.codec'
|
|
relocate 'org.apache.commons.compress', 'datahub.shaded.org.apache.commons.compress'
|
|
relocate 'org.apache.commons.lang3', 'datahub.shaded.org.apache.commons.lang3'
|
|
relocate 'org.apache.commons.lang', 'datahub.shaded.org.apache.commons.lang'
|
|
relocate 'org.apache.commons.cli', 'datahub.shaded.org.apache.commons.cli'
|
|
relocate 'org.apache.commons.text', 'datahub.shaded.org.apache.commons.text'
|
|
relocate 'org.apache.commons.io', 'datahub.shaded.org.apache.commons.io'
|
|
relocate 'org.apache.maven', 'datahub.shaded.org.apache.maven'
|
|
relocate 'org.reflections', 'datahub.shaded.org.reflections'
|
|
relocate 'st4hidden', 'datahub.shaded.st4hidden'
|
|
relocate 'org.stringtemplate', 'datahub.shaded.org.stringtemplate'
|
|
relocate 'org.abego.treelayout', 'datahub.shaded.treelayout'
|
|
relocate 'javax.annotation', 'datahub.shaded.javax.annotation'
|
|
relocate 'com.github.benmanes.caffeine', 'datahub.shaded.com.github.benmanes.caffeine'
|
|
relocate 'org.checkerframework', 'datahub.shaded.org.checkerframework'
|
|
relocate 'com.google.errorprone', 'datahub.shaded.com.google.errorprone'
|
|
// Below jars added for kafka emitter only
|
|
relocate 'com.thoughtworks.paranamer', 'datahub.shaded.com.thoughtworks.paranamer'
|
|
relocate 'org.xerial.snappy', 'datahub.shaded.org.xerial.snappy'
|
|
relocate 'org.apache.kafka', 'datahub.shaded.org.apache.kafka'
|
|
relocate 'org.apache.http', 'datahub.shaded.org.apache.http'
|
|
relocate 'software.amazon.awssdk', 'datahub.shaded.software.amazon.awssdk'
|
|
relocate 'io.confluent', 'datahub.shaded.io.confluent'
|
|
relocate 'org.apache.zookeeper', 'datahub.shaded.org.apache.zookeeper'
|
|
relocate 'org.apache.yetus', 'datahub.shaded.org.apache.yetus'
|
|
relocate 'jline', 'datahub.shaded.jline'
|
|
relocate 'org.apache.jute', 'datahub.shaded.org.apache.jute'
|
|
relocate 'org.I0Itec.zkclient', 'datahub.shaded.org.I0Itec.zkclient'
|
|
relocate 'net.jpountz', 'datahub.shaded.net.jpountz'
|
|
relocate 'com.github.luben', 'datahub.shaded.com.github.luben'
|
|
relocate 'common.message', 'datahub.shaded.common.message'
|
|
relocate 'org.glassfish', 'datahub.shaded.org.glassfish'
|
|
relocate 'ch.randelshofer', 'datahub.shaded.ch.randelshofer'
|
|
relocate 'io.github.classgraph', 'datahub.shaded.io.github.classgraph'
|
|
relocate 'nonapi.io.github.classgraph', 'datahub.shaded.nonapi.io.github.classgraph'
|
|
relocate 'org.eclipse.parsson', 'datahub.shaded.parsson'
|
|
relocate 'jakarta.json', 'datahub.shaded.json'
|
|
relocate 'io.netty', 'datahub.shaded.io.netty'
|
|
relocate 'org.apache.hc', 'datahub.shaded.org.apache.hc'
|
|
relocate 'org.reactivestreams', 'datahub.shaded.org.reactivestreams'
|
|
relocate 'software.amazon.eventstream', 'datahub.shaded.software.amazon.eventstream'
|
|
finalizedBy checkShadowJar
|
|
}
|
|
|
|
checkShadowJar {
|
|
dependsOn shadowJar
|
|
}
|
|
|
|
assemble {
|
|
dependsOn shadowJar
|
|
}
|
|
compileTestJava.dependsOn shadowJar
|
|
|
|
task sourcesJar(type: Jar) {
|
|
archiveClassifier = 'sources'
|
|
from sourceSets.main.allSource
|
|
}
|
|
|
|
task javadocJar(type: Jar) {
|
|
archiveClassifier = 'javadoc'
|
|
from javadoc
|
|
}
|
|
|
|
publishing {
|
|
publications {
|
|
shadow(MavenPublication) { publication ->
|
|
project.shadow.component(publication)
|
|
pom {
|
|
name = 'Datahub Client'
|
|
group = 'io.acryl'
|
|
artifactId = 'datahub-client' + (project.hasProperty('archiveAppendix') ? "-${archiveAppendix}" : '')
|
|
description = 'DataHub Java client for metadata integration'
|
|
url = 'https://datahubproject.io'
|
|
artifacts = [shadowJar, javadocJar, sourcesJar]
|
|
|
|
scm {
|
|
connection = 'scm:git:git://github.com/datahub-project/datahub.git'
|
|
developerConnection = 'scm:git:ssh://github.com:datahub-project/datahub.git'
|
|
url = 'https://github.com/datahub-project/datahub.git'
|
|
}
|
|
|
|
licenses {
|
|
license {
|
|
name = 'The Apache License, Version 2.0'
|
|
url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
|
|
}
|
|
}
|
|
|
|
developers {
|
|
developer {
|
|
id = 'datahub'
|
|
name = 'Datahub'
|
|
email = 'datahub@acryl.io'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
repositories {
|
|
maven {
|
|
def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
|
|
def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/"
|
|
def ossrhUsername = System.getenv('RELEASE_USERNAME')
|
|
def ossrhPassword = System.getenv('RELEASE_PASSWORD')
|
|
credentials {
|
|
username ossrhUsername
|
|
password ossrhPassword
|
|
}
|
|
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
|
|
}
|
|
}
|
|
}
|
|
|
|
signing {
|
|
def signingKey = findProperty("signingKey")
|
|
def signingPassword = System.getenv("SIGNING_PASSWORD")
|
|
useInMemoryPgpKeys(signingKey, signingPassword)
|
|
sign publishing.publications.shadow
|
|
}
|
|
|
|
nexusStaging {
|
|
serverUrl = "https://s01.oss.sonatype.org/service/local/"
|
|
//required only for projects registered in Sonatype after 2021-02-24
|
|
username = System.getenv("NEXUS_USERNAME")
|
|
password = System.getenv("NEXUS_PASSWORD")
|
|
} |