| /* |
| * 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) |
| } |