blob: 46c10534ca7d50812a6cf92d00b2e31e93440b48 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
plugins {
// Bump up version to 0.9.1 in order for generateAvro task to work with Gradle 5
id "com.commercehub.gradle.plugin.avro-base" version "0.9.1"
}
apply plugin: 'java'
apply plugin: 'me.champeau.gradle.jmh'
apply plugin: "com.commercehub.gradle.plugin.avro-base"
avro {
stringType = "string"
}
task generateAvro(type: com.commercehub.gradle.plugin.avro.GenerateAvroJavaTask) {
source("src/main/avro")
outputDir = file("src/main/gen-java")
}
compileJava {
dependsOn tasks.generateAvro
}
dependencies {
compile project(":gobblin-api")
compile project(":gobblin-core")
compile project(":gobblin-core-base")
compile project(":gobblin-hive-registration")
compile project(":gobblin-metrics-libs:gobblin-metrics")
compile project(":gobblin-metastore")
compile project(":gobblin-utility")
compile project(path: ':gobblin-rest-service:gobblin-rest-api', configuration: 'restClient')
compile project(path: ':gobblin-rest-service:gobblin-rest-api', configuration: 'dataTemplate')
compile project(path: ':gobblin-restli:gobblin-flow-config-service:gobblin-flow-config-service-api', configuration: 'restClient')
compile project(path: ':gobblin-restli:gobblin-flow-config-service:gobblin-flow-config-service-api', configuration: 'dataTemplate')
compile project(":gobblin-rest-service:gobblin-rest-server")
compile project(":gobblin-modules:google-ingestion")
compile externalDependency.avro
compile externalDependency.avroMapredH2
compile externalDependency.calciteCore
//compile externalDependency.calciteAvatica
compile externalDependency.commonsCli
compile externalDependency.commonsCollections4
compile externalDependency.commonsConfiguration
compile externalDependency.commonsEmail
compile externalDependency.commonsLang
compile externalDependency.commonsLang3
compile externalDependency.commonsIo
compile externalDependency.curatorFramework
compile externalDependency.curatorClient
compile externalDependency.curatorRecipes
compile externalDependency.findBugsAnnotations
compile externalDependency.gson
compile externalDependency.gsonJavatimeSerialisers
compile externalDependency.guava
compile externalDependency.guice
compile externalDependency.httpclient
compile externalDependency.httpcore
compile externalDependency.jacksonCore
compile externalDependency.jacksonMapper
compile externalDependency.javaxInject
compile externalDependency.jodaTime
compile externalDependency.metricsCore
compile externalDependency.metricsJvm
compile externalDependency.mockito
compile externalDependency.pegasus.data
compile externalDependency.quartz
compile externalDependency.slf4j
compile externalDependency.typesafeConfig
compile externalDependency.guavaretrying
compile externalDependency.hiveExec
compile externalDependency.parquet
compile externalDependency.kryo
testCompile project(path: ":gobblin-metastore", configuration: "testFixtures")
testCompile externalDependency.jhyde
testCompile externalDependency.testng
testCompile externalDependency.hamcrest
testCompile externalDependency.byteman
testCompile externalDependency.bytemanBmunit
testCompile externalDependency.curatorClient
testCompile externalDependency.curatorTest
testCompile externalDependency.mockito
testRuntime externalDependency.derby
testCompile externalDependency.jmh
}
// Begin HACK to get around POM being depenendent on the (empty) gobblin-rest-api instead of gobblin-rest-api-rest-client
def installer = install.repositories.mavenInstaller
[installer]*.pom*.whenConfigured {pom ->
def it = pom.dependencies
def s = it.find {dep -> dep.groupId == project.group && dep.artifactId == 'gobblin-rest-api' }
if (s != null) {
def t = s.clone()
t.artifactId = 'gobblin-rest-api-data-template'
it.add(t)
s.artifactId = 'gobblin-rest-api-rest-client'
}
}
if (rootProject.publishToMaven || rootProject.publishToNexus) {
def deployer = uploadArchives.repositories.mavenDeployer
[deployer]*.pom*.whenConfigured {pom ->
def it = pom.dependencies
def s = it.find {dep -> dep.groupId == project.group && dep.artifactId == 'gobblin-rest-api' }
if (s != null) {
def t = s.clone()
t.artifactId = 'gobblin-rest-api-data-template'
it.add(t)
s.artifactId = 'gobblin-rest-api-rest-client'
}
}
}
// End HACK
task testJar(type: Jar, dependsOn: testClasses) {
baseName = "test-${project.archivesBaseName}"
from sourceSets.test.output
}
configurations {
tests
}
configurations {
compile {
transitive = false
}
}
sourceSets {
main {
java {
srcDir 'src/main/gen-java'
}
resources {
srcDir 'src/main/avro'
}
}
}
artifacts {
tests testJar
}
jmh {
include = ""
zip64 = true
duplicateClassesStrategy = "EXCLUDE"
}
test {
systemProperty "org.jboss.byteman.verbose", "true"
workingDir rootProject.rootDir
maxParallelForks = 1
}
clean {
delete "../gobblin-test/locks"
delete "../gobblin-test/basicTest"
}
ext.classification="library"
/**
* Converts old style pull files into *.conf with templates
*
* Usage:
* ./gradlew :gobblin-runtime:pullFileConverter -PpullFilesRootPath=... -PpullFilesToConvertGlob=... -PtemplatePath=...
* -PsysConfigPath=... -PoutputDir=...
*/
task pullFileConverter(type: JavaExec) {
dependsOn jar
doFirst {
main = "org.apache.gobblin.runtime.template.PullFileToConfigConverter"
def pullFilesRootPath = "pullFilesRootPath"
def pullFilesToConvertGlob = "pullFilesToConvertGlob"
def templatePath = "templatePath"
def sysConfigPath = "sysConfigPath"
def outputDir = "outputDir"
def props = [pullFilesRootPath, pullFilesToConvertGlob, templatePath, sysConfigPath, outputDir]
for (prop in props) {
if (!project.hasProperty(prop)) {
throw new RuntimeException("Missing property " + prop)
}
}
def templateFile = file(project.property(templatePath))
def templateClasspath = templateFile.getParent()
classpath = files(sourceSets.main.runtimeClasspath, templateClasspath)
args = [project.property(pullFilesRootPath), project.property(pullFilesToConvertGlob),
"resource:///" + templateFile.getName(),
project.property(sysConfigPath), project.property(outputDir)]
}
}