mirror of
				https://github.com/datahub-project/datahub.git
				synced 2025-11-03 20:27:50 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			199 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
			
		
		
	
	
			199 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
plugins {
 | 
						|
    id("com.palantir.git-version") apply false
 | 
						|
}
 | 
						|
apply plugin: 'java'
 | 
						|
apply plugin: 'com.github.johnrengelman.shadow'
 | 
						|
apply plugin: 'jacoco'
 | 
						|
apply plugin: 'signing'
 | 
						|
apply plugin: 'io.codearte.nexus-staging'
 | 
						|
apply plugin: 'maven-publish'
 | 
						|
import org.apache.tools.ant.filters.ReplaceTokens
 | 
						|
 | 
						|
jar.enabled = false // Since we only want to build shadow jars, disabling the regular jar creation
 | 
						|
 | 
						|
dependencies {
 | 
						|
   
 | 
						|
    implementation project(':metadata-models')
 | 
						|
    shadow externalDependency.httpAsyncClient // we want our clients to provide this
 | 
						|
    implementation externalDependency.jacksonDataBind 
 | 
						|
    compileOnly externalDependency.lombok
 | 
						|
    annotationProcessor externalDependency.lombok
 | 
						|
    testCompile externalDependency.httpAsyncClient // needed as shadow excludes it
 | 
						|
    testCompile externalDependency.mockito
 | 
						|
    testCompile externalDependency.mockServer
 | 
						|
    testCompile externalDependency.mockServerClient
 | 
						|
}
 | 
						|
 | 
						|
jacocoTestReport {
 | 
						|
    dependsOn test // tests are required to run before generating the report
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
def detailedVersionString = "0.0.0-unknown-SNAPSHOT"
 | 
						|
def snapshotVersion = false
 | 
						|
if (project.hasProperty("releaseVersion")) {
 | 
						|
  version = releaseVersion
 | 
						|
  detailedVersionString = releaseVersion
 | 
						|
} else {
 | 
						|
  try {
 | 
						|
      // apply this plugin in a try-catch block so that we can handle cases without .git directory
 | 
						|
      apply plugin: "com.palantir.git-version"
 | 
						|
      println("In else section")
 | 
						|
      def details = versionDetails()
 | 
						|
      detailedVersionString = gitVersion()
 | 
						|
      version = details.lastTag
 | 
						|
      version = version.startsWith("v")? version.substring(1): version
 | 
						|
      def suffix = details.isCleanTag? "": "-SNAPSHOT"
 | 
						|
      snapshotVersion = ! details.isCleanTag
 | 
						|
    }
 | 
						|
    catch (Exception e) {
 | 
						|
          e.printStackTrace()
 | 
						|
          // last fall back
 | 
						|
          version = detailedVersionString
 | 
						|
      }
 | 
						|
  }
 | 
						|
    // trim version if it is of size 4 to size 3
 | 
						|
    def versionParts = version.tokenize(".")
 | 
						|
    if (versionParts.size() > 3) {
 | 
						|
      // at-least 4 part version
 | 
						|
      // we check if the 4th part is a .0 in which case we want to create a release
 | 
						|
      if (versionParts[3] != '0') {
 | 
						|
        snapshotVersion = true
 | 
						|
      }
 | 
						|
      versionParts = versionParts[0..2]
 | 
						|
      version = versionParts[0..2].join('.')
 | 
						|
    }
 | 
						|
 | 
						|
    if (snapshotVersion) {
 | 
						|
        if (versionParts[versionParts.size()-1].isInteger()) {
 | 
						|
          version = versionParts[0..versionParts.size()-2].join('.') + '.' + (versionParts[versionParts.size()-1].toInteger()+1).toString() + "-SNAPSHOT"
 | 
						|
        } else {
 | 
						|
          // we are unable to part the last token as an integer, so we just append SNAPSHOT to this version
 | 
						|
          version = versionParts[0..versionParts.size()-1].join('.') + '-SNAPSHOT'
 | 
						|
      }
 | 
						|
    }
 | 
						|
 
 | 
						|
    processResources {
 | 
						|
      filter(ReplaceTokens, tokens:[fullVersion: detailedVersionString])
 | 
						|
    }
 | 
						|
 | 
						|
test {
 | 
						|
  useJUnit()
 | 
						|
  finalizedBy jacocoTestReport
 | 
						|
}
 | 
						|
 | 
						|
task checkShadowJar(type: Exec) { 
 | 
						|
   commandLine 'sh', '-c', 'scripts/check_jar.sh'
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
shadowJar {
 | 
						|
  zip64=true
 | 
						|
  archiveClassifier = ''
 | 
						|
  dependencies {
 | 
						|
    exclude(dependency('org.apache.httpcomponents:httpasyncclient'))
 | 
						|
  }
 | 
						|
  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 'com.google.common', 'datahub.shaded.com.google.common'
 | 
						|
  relocate 'org.apache.commons', 'datahub.shaded.org.apache.commons'
 | 
						|
  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 'javax.annotation', 'datahub.shaded.javax.annotation'
 | 
						|
  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 Client'
 | 
						|
        group = 'io.acryl'
 | 
						|
        artifactId = 'datahub-client'
 | 
						|
        description = 'DataHub Java client for metadata integration'
 | 
						|
        url = 'https://datahubproject.io'
 | 
						|
        artifacts = [ shadowJar, javadocJar, sourcesJar ]
 | 
						|
 | 
						|
        scm {
 | 
						|
          connection = 'scm:git:git://github.com/linkedin/datahub.git'
 | 
						|
          developerConnection = 'scm:git:ssh://github.com:linkedin/datahub.git'
 | 
						|
          url = 'https://github.com/linkedin/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")
 | 
						|
}
 |