diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 91b8bda92b..bbbf2a3015 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -1,11 +1,27 @@ +import java.util.* + plugins { `kotlin-dsl` } repositories { gradlePluginPortal() + maven("https://kotlin.bintray.com/kotlin-eap") + maven("https://kotlin.bintray.com/kotlin-dev") } kotlinDslPluginOptions { experimentalWarning.set(false) } + +val props = Properties().apply { + file("../gradle.properties").inputStream().use { load(it) } +} + +fun version(target: String): String = + props.getProperty("${target}_version") + +dependencies { + implementation(kotlin("gradle-plugin", version("kotlin"))) + implementation("org.jetbrains.dokka:dokka-gradle-plugin:${version("dokka")}") +} diff --git a/buildSrc/src/main/kotlin/Dokka.kt b/buildSrc/src/main/kotlin/Dokka.kt new file mode 100644 index 0000000000..72365c1ee0 --- /dev/null +++ b/buildSrc/src/main/kotlin/Dokka.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2016-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.api.Project +import org.gradle.kotlin.dsl.delegateClosureOf +import org.gradle.kotlin.dsl.withType +import org.jetbrains.dokka.DokkaConfiguration.ExternalDocumentationLink.Builder +import org.jetbrains.dokka.gradle.DokkaTask +import java.io.File +import java.net.URL + +fun Project.externalDocumentationLink( + url: String, + packageList: File = projectDir.resolve("package.list") +) { + tasks.withType().configureEach { + externalDocumentationLink(delegateClosureOf { + this.url = URL(url) + packageListUrl = packageList.toPath().toUri().toURL() + }) + } +} diff --git a/reactive/kotlinx-coroutines-reactive/build.gradle.kts b/reactive/kotlinx-coroutines-reactive/build.gradle.kts index c69148fecf..d21b28f8ce 100644 --- a/reactive/kotlinx-coroutines-reactive/build.gradle.kts +++ b/reactive/kotlinx-coroutines-reactive/build.gradle.kts @@ -2,10 +2,6 @@ * Copyright 2016-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ -import org.jetbrains.dokka.DokkaConfiguration.ExternalDocumentationLink -import org.jetbrains.dokka.gradle.DokkaTask -import java.net.URL - val reactiveStreamsVersion = property("reactive_streams_version") dependencies { @@ -13,31 +9,26 @@ dependencies { testCompile("org.reactivestreams:reactive-streams-tck:$reactiveStreamsVersion") } -tasks { - val testNG = register("testNG") { - useTestNG() - reports.html.destination = file("$buildDir/reports/testng") - include("**/*ReactiveStreamTckTest.*") - // Skip testNG when tests are filtered with --tests, otherwise it simply fails - onlyIf { - filter.includePatterns.isEmpty() - } - doFirst { - // Classic gradle, nothing works without doFirst - println("TestNG tests: ($includes)") - } +val testNG by tasks.registering(Test::class) { + useTestNG() + reports.html.destination = file("$buildDir/reports/testng") + include("**/*ReactiveStreamTckTest.*") + // Skip testNG when tests are filtered with --tests, otherwise it simply fails + onlyIf { + filter.includePatterns.isEmpty() } - - named("test") { - reports.html.destination = file("$buildDir/reports/junit") - - dependsOn(testNG) + doFirst { + // Classic gradle, nothing works without doFirst + println("TestNG tests: ($includes)") } +} - withType().configureEach { - externalDocumentationLink(delegateClosureOf { - url = URL("https://www.reactive-streams.org/reactive-streams-$reactiveStreamsVersion-javadoc/") - packageListUrl = projectDir.toPath().resolve("package.list").toUri().toURL() - }) - } +tasks.test { + reports.html.destination = file("$buildDir/reports/junit") + + dependsOn(testNG) } + +externalDocumentationLink( + url = "https://www.reactive-streams.org/reactive-streams-$reactiveStreamsVersion-javadoc/" +) diff --git a/ui/kotlinx-coroutines-android/build.gradle.kts b/ui/kotlinx-coroutines-android/build.gradle.kts index 4be32fc5c6..c328566775 100644 --- a/ui/kotlinx-coroutines-android/build.gradle.kts +++ b/ui/kotlinx-coroutines-android/build.gradle.kts @@ -2,10 +2,6 @@ * Copyright 2016-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ -import org.jetbrains.dokka.DokkaConfiguration.ExternalDocumentationLink -import org.jetbrains.dokka.gradle.DokkaTask -import java.net.URL - repositories { google() } @@ -100,9 +96,6 @@ tasks.test { } } -tasks.withType().configureEach { - externalDocumentationLink(delegateClosureOf { - url = URL("https://developer.android.com/reference/") - packageListUrl = projectDir.toPath().resolve("package.list").toUri().toURL() - }) -} +externalDocumentationLink( + url = "https://developer.android.com/reference/" +)