mirror of
https://github.com/datahub-project/datahub.git
synced 2025-06-27 05:03:31 +00:00
199 lines
6.5 KiB
Groovy
199 lines
6.5 KiB
Groovy
plugins {
|
|
id("com.palantir.git-version") apply false
|
|
id "application"
|
|
}
|
|
apply plugin: 'java'
|
|
apply plugin: 'com.gradleup.shadow'
|
|
apply plugin: 'signing'
|
|
apply plugin: 'io.codearte.nexus-staging'
|
|
apply plugin: 'maven-publish'
|
|
apply from: '../versioning.gradle'
|
|
apply from: '../../../gradle/coverage/java-coverage.gradle'
|
|
|
|
jar.enabled = false // Since we only want to build shadow jars, disabling the regular jar creation
|
|
|
|
ext {
|
|
javaMainClass = "datahub.protobuf.Proto2DataHub"
|
|
}
|
|
|
|
application {
|
|
mainClassName = javaMainClass
|
|
}
|
|
|
|
dependencies {
|
|
implementation project(':metadata-models')
|
|
implementation project(path: ':metadata-integration:java:datahub-client', configuration: 'shadow')
|
|
|
|
implementation externalDependency.guava
|
|
implementation externalDependency.protobuf
|
|
implementation externalDependency.jgrapht
|
|
implementation externalDependency.gson
|
|
implementation externalDependency.commonsCli
|
|
implementation externalDependency.httpClient
|
|
implementation externalDependency.slf4jApi
|
|
implementation externalDependency.jacksonCore
|
|
compileOnly externalDependency.lombok
|
|
annotationProcessor externalDependency.lombok
|
|
testImplementation externalDependency.testng
|
|
}
|
|
|
|
import java.nio.file.Paths
|
|
task compileProtobuf {
|
|
doLast {
|
|
def basePath = Paths.get("${projectDir}/src/test/resources")
|
|
[
|
|
fileTree("${projectDir}/src/test/resources/protobuf") { include "*.proto" },
|
|
fileTree("${projectDir}/src/test/resources/extended_protobuf") { include "*.proto" }
|
|
].collectMany { it.collect() }.each { f ->
|
|
def input = basePath.relativize(Paths.get(f.getAbsolutePath()))
|
|
println(input.toString() + " => " + input.toString().replace(".proto", ".protoc"))
|
|
exec {
|
|
workingDir "${projectDir}/src/test/resources"
|
|
commandLine 'protoc', '--proto_path=.', '--include_imports', '--include_source_info',
|
|
"--descriptor_set_out=${input.toString().replace(".proto", ".protoc")}",
|
|
input
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
task checkShadowJar(type: Exec) {
|
|
commandLine 'sh', '-c', 'scripts/check_jar.sh'
|
|
}
|
|
|
|
//mark implementation dependencies which needs to excluded along with transitive dependencies from shadowjar
|
|
//functionality is exactly same as "implementation"
|
|
configurations {
|
|
provided
|
|
implementation.extendsFrom provided
|
|
}
|
|
|
|
shadowJar {
|
|
zip64=true
|
|
archiveClassifier = ''
|
|
def exclude_modules = project
|
|
.configurations
|
|
.provided
|
|
.resolvedConfiguration
|
|
.getLenientConfiguration()
|
|
.getAllModuleDependencies()
|
|
.collect {
|
|
it.name
|
|
}
|
|
dependencies {
|
|
exclude(dependency {
|
|
exclude_modules.contains(it.name)
|
|
})
|
|
|
|
}
|
|
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 'com.fasterxml.jackson', 'datahub.shaded.jackson'
|
|
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 'org.apache.commons', 'datahub.shaded.org.apache.commons'
|
|
relocate 'org.apache.http', 'datahub.shaded.org.apache.http'
|
|
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 'org.slf4j', 'datahub.shaded.slf4j'
|
|
relocate 'com.github.benmanes.caffeine', 'datahub.shaded.com.github.benmanes.caffeine'
|
|
relocate 'org.checkerframework', 'datahub.shaded.org.checkerframework'
|
|
relocate 'org.jgrapht', 'datahub.shaded.org.jgrapht'
|
|
relocate 'org.jheaps', 'datahub.shaded.org.jheaps'
|
|
relocate 'ch.randelshofer', 'datahub.shaded.ch.randelshofer'
|
|
relocate 'org.apache.hc', 'datahub.shaded.org.apache.hc'
|
|
|
|
finalizedBy checkShadowJar
|
|
}
|
|
|
|
checkShadowJar {
|
|
dependsOn shadowJar
|
|
}
|
|
|
|
assemble {
|
|
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 Protobuf'
|
|
group = 'io.acryl'
|
|
artifactId = 'datahub-protobuf'
|
|
description = 'DataHub integration with Protobuf schemas for metadata'
|
|
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")
|
|
}
|
|
|
|
startScripts.dependsOn shadowJar
|