mirror of
				https://github.com/datahub-project/datahub.git
				synced 2025-10-31 10:49:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			200 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
			
		
		
	
	
			200 lines
		
	
	
		
			6.6 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 platform(externalDependency.jacksonBom)
 | |
|     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://docs.datahub.com'
 | |
|         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://ossrh-staging-api.central.sonatype.com/service/local/staging/deploy/maven2/"
 | |
|       def snapshotsRepoUrl = "https://ossrh-staging-api.central.sonatype.com/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://ossrh-staging-api.central.sonatype.com/service/local/" //required only for projects registered in Sonatype after 2021-02-24
 | |
|     username = System.getenv("RELEASE_USERNAME")
 | |
|     password = System.getenv("RELEASE_PASSWORD")
 | |
| }
 | |
| 
 | |
| startScripts.dependsOn shadowJar
 | 
