blob: 5e54c9583f43bfcb60d0c75255cfd8154dbcda9b [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 {
id 'com.github.johnrengelman.shadow' version '5.2.0' apply false
}
subprojects {
apply plugin: 'java'
apply plugin: 'scala' // optional; uncomment if needed
if (project != project(":common")) {
apply plugin: 'application'
}
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'checkstyle'
// artifact properties
group = 'org.apache.flink'
version = '1.10-SNAPSHOT'
description = """Flink Training Exercises"""
ext {
javaVersion = '1.8'
flinkVersion = '1.10.0'
scalaBinaryVersion = '2.12'
slf4jVersion = '1.7.15'
log4jVersion = '1.2.17'
junitVersion = '4.12'
}
sourceCompatibility = javaVersion
targetCompatibility = javaVersion
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
// declare where to find the dependencies of your project
repositories {
// for access from China, you may need to uncomment this line
// maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
mavenCentral()
maven {
url "https://repository.apache.org/content/repositories/snapshots/"
mavenContent {
snapshotsOnly()
}
}
}
// NOTE: We cannot use "compileOnly" or "shadow" configurations since then we could not run code
// in the IDE or with "gradle run". We also cannot exclude transitive dependencies from the
// shadowJar yet (see https://github.com/johnrengelman/shadow/issues/159).
// -> Explicitly define the // libraries we want to be included in the "flinkShadowJar" configuration!
configurations {
flinkShadowJar // dependencies which go into the shadowJar
// provided by Flink
flinkShadowJar.exclude group: 'org.apache.flink', module: 'force-shading'
flinkShadowJar.exclude group: 'com.google.code.findbugs', module: 'jsr305'
flinkShadowJar.exclude group: 'org.slf4j'
flinkShadowJar.exclude group: 'log4j'
// already provided dependencies from serializer frameworks
flinkShadowJar.exclude group: 'com.esotericsoftware.kryo', module: 'kryo'
flinkShadowJar.exclude group: 'javax.servlet', module: 'servlet-api'
flinkShadowJar.exclude group: 'org.apache.httpcomponents', module: 'httpclient'
}
// common set of dependencies
dependencies {
implementation "log4j:log4j:${log4jVersion}"
implementation "org.slf4j:slf4j-log4j12:${slf4jVersion}"
flinkShadowJar "joda-time:joda-time:2.7"
if (project != project(":common")) {
implementation project(path: ':common')
// transitive dependencies for flinkShadowJar need to be defined above
// (the alternative of using configuration: 'shadow' does not work there because that adds a dependency on
// the jar file, not the sources)
flinkShadowJar project(path: ':common', transitive: false)
testImplementation(project(":common")) {
capabilities { requireCapability("$group:common-test") }
}
}
}
// make flinkShadowJar dependencies available:
sourceSets {
main.java.srcDirs += 'src/solution/java'
main.scala.srcDirs += 'src/solution/scala'
main.compileClasspath += configurations.flinkShadowJar
main.runtimeClasspath += configurations.flinkShadowJar
test.compileClasspath += configurations.flinkShadowJar
test.runtimeClasspath += configurations.flinkShadowJar
javadoc.classpath += configurations.flinkShadowJar
}
if (plugins.findPlugin('application')) {
applicationDefaultJvmArgs = ["-Dlog4j.configuration=log4j.properties"]
run.classpath = sourceSets.main.runtimeClasspath
}
jar {
manifest {
attributes 'Built-By': System.getProperty('user.name'),
'Build-Jdk': System.getProperty('java.version')
}
}
shadowJar {
configurations = [project.configurations.flinkShadowJar]
}
assemble.dependsOn(shadowJar)
}