| /* | |
| * 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. | |
| */ | |
| buildscript { | |
| ext { | |
| beamVersion = '2.61.0' | |
| guavaVersion = '31.0.1-jre' | |
| jodaTimeVersion = '2.10.10' | |
| slf4jVersion = '1.7.30' | |
| log4jSlf4jImpl = '2.17.1' | |
| assertjVersion = '3.22.0' | |
| hamcrestVersion = '2.1' | |
| junitVersion = '4.13.1' | |
| } | |
| repositories { | |
| mavenCentral() | |
| } | |
| } | |
| def printOutput(def output) { | |
| return tasks.create("printOutput") { | |
| for (line in output.toString().readLines()) { | |
| println "#educational_plugin" + line | |
| } | |
| } | |
| } | |
| subprojects { | |
| apply plugin: 'application' | |
| apply plugin: 'java' | |
| sourceCompatibility = 1.8 | |
| repositories { | |
| mavenCentral() | |
| } | |
| dependencies { | |
| implementation "org.apache.beam:beam-sdks-java-core:$beamVersion" | |
| runtimeOnly "org.apache.beam:beam-runners-direct-java:$beamVersion" | |
| implementation "joda-time:joda-time:$jodaTimeVersion" | |
| implementation "org.slf4j:slf4j-api:$slf4jVersion" | |
| implementation "org.apache.logging.log4j:log4j-slf4j-impl:$log4jSlf4jImpl" | |
| implementation "com.google.guava:guava:$guavaVersion" | |
| testImplementation "junit:junit:$junitVersion" | |
| testImplementation "org.hamcrest:hamcrest:$hamcrestVersion" | |
| testImplementation "org.assertj:assertj-core:$assertjVersion" | |
| } | |
| sourceSets { | |
| main { | |
| java.srcDir 'src' | |
| resources.srcDir 'resources' | |
| } | |
| test { | |
| java.srcDir 'test' | |
| } | |
| } | |
| mainClassName = project.hasProperty("mainClass") ? project.getProperty("mainClass") : "" | |
| test { | |
| outputs.upToDateWhen { false } | |
| afterTest { TestDescriptor test, TestResult result -> | |
| if (result.resultType == TestResult.ResultType.FAILURE) { | |
| def message = result.exception?.message ?: "Wrong answer" | |
| def lines = message.readLines() | |
| println "#educational_plugin FAILED + " + lines[0] | |
| lines[1..-1].forEach { line -> | |
| println "#educational_plugin" + line | |
| } | |
| // we need this to separate output of different tests | |
| println() | |
| } | |
| } | |
| } | |
| def runOutput = new ByteArrayOutputStream() | |
| tasks.run.setStandardOutput(runOutput) | |
| tasks.run.doLast { printOutput(runOutput) } | |
| } | |
| project(':util') { | |
| dependencies { | |
| implementation "junit:junit:$junitVersion" | |
| } | |
| } | |
| configure(subprojects.findAll { it.name != 'util' }) { | |
| dependencies { | |
| implementation project(':util').sourceSets.main.output | |
| testImplementation project(':util').sourceSets.test.output | |
| } | |
| } | |
| wrapper { | |
| gradleVersion = '5.0' | |
| } |