Skip to content

Commit 52c4755

Browse files
whyolegqwwdfsadadam-enko
authored
Migrate to DGPv2 (#4436)
* Cleanup `dokka-convention` * Drop local package list for stdlib Co-authored-by: Vsevolod Tolstopyatov <[email protected]> Co-authored-by: Adam <[email protected]>
1 parent 4f54d9d commit 52c4755

File tree

9 files changed

+45
-326
lines changed

9 files changed

+45
-326
lines changed

buildSrc/src/main/kotlin/Dokka.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import org.gradle.api.*
2+
import org.gradle.api.publish.PublishingExtension
23
import org.gradle.kotlin.dsl.*
3-
import org.jetbrains.dokka.gradle.*
4+
import org.jetbrains.dokka.gradle.DokkaExtension
45
import java.io.*
56
import java.net.*
67

@@ -11,11 +12,11 @@ fun Project.externalDocumentationLink(
1112
url: String,
1213
packageList: File = projectDir.resolve("package.list")
1314
) {
14-
tasks.withType<AbstractDokkaLeafTask>().configureEach {
15+
extensions.configure<DokkaExtension> {
1516
dokkaSourceSets.configureEach {
16-
externalDocumentationLink {
17-
this.url = URL(url)
18-
packageListUrl = packageList.toPath().toUri().toURL()
17+
externalDocumentationLinks.register("api") {
18+
this.url = URI.create(url)
19+
this.packageListUrl = packageList.toURI()
1920
}
2021
}
2122
}

buildSrc/src/main/kotlin/UnpackAar.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ import java.util.zip.ZipFile
1616
val artifactType = Attribute.of("artifactType", String::class.java)
1717
val unpackedAar = Attribute.of("unpackedAar", Boolean::class.javaObjectType)
1818

19-
fun Project.configureAar() = configurations.configureEach {
20-
afterEvaluate {
21-
if (isCanBeResolved && !isCanBeConsumed) {
19+
fun Project.configureAar() {
20+
configurations
21+
.matching { it.isCanBeResolved && !it.isCanBeConsumed }
22+
.configureEach {
2223
attributes.attribute(unpackedAar, true) // request all AARs to be unpacked
2324
}
24-
}
2525
}
2626

2727
fun DependencyHandlerScope.configureAarUnpacking() {
Lines changed: 23 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import org.jetbrains.dokka.gradle.*
21
import java.net.*
32

43

@@ -7,75 +6,45 @@ plugins {
76
}
87

98
val knit_version: String by project
10-
private val projetsWithoutDokka = unpublished + "kotlinx-coroutines-bom" + jdk8ObsoleteModule
11-
private val coreModuleDocsUrl = "https://kotlinlang.org/api/kotlinx.coroutines/$coreModule/"
12-
private val coreModuleDocsPackageList = "$projectDir/kotlinx-coroutines-core/build/dokka/htmlPartial/package-list"
9+
private val projectsWithoutDokka = unpublished + "kotlinx-coroutines-bom" + jdk8ObsoleteModule
10+
private val subprojectWithDokka = subprojects.filterNot { projectsWithoutDokka.contains(it.name) }
1311

14-
configure(subprojects.filterNot { projetsWithoutDokka.contains(it.name) }) {
12+
configure(subprojectWithDokka) {
1513
apply(plugin = "org.jetbrains.dokka")
1614
configurePathsaver()
15+
configureDokkaTemplatesDir()
1716
condigureDokkaSetup()
18-
configureExternalLinks()
1917
}
2018

21-
// Setup top-level 'dokkaHtmlMultiModule' with templates
22-
tasks.withType<DokkaMultiModuleTask>().named("dokkaHtmlMultiModule") {
23-
setupDokkaTemplatesDir(this)
24-
}
19+
// For top-level multimodule collection
20+
configurePathsaver()
21+
configureDokkaTemplatesDir()
2522

2623
dependencies {
27-
// Add explicit dependency between Dokka and Knit plugin
28-
add("dokkaHtmlMultiModulePlugin", "org.jetbrains.kotlinx:dokka-pathsaver-plugin:$knit_version")
24+
subprojectWithDokka.forEach {
25+
dokka(it)
26+
}
2927
}
3028

3129
// Dependencies for Knit processing: Knit plugin to work with Dokka
3230
private fun Project.configurePathsaver() {
33-
tasks.withType(DokkaTaskPartial::class).configureEach {
34-
dependencies {
35-
plugins("org.jetbrains.kotlinx:dokka-pathsaver-plugin:$knit_version")
36-
}
31+
dependencies {
32+
dokkaPlugin("org.jetbrains.kotlinx:dokka-pathsaver-plugin:$knit_version")
3733
}
3834
}
3935

4036
// Configure Dokka setup
4137
private fun Project.condigureDokkaSetup() {
42-
tasks.withType(DokkaTaskPartial::class).configureEach {
43-
suppressInheritedMembers = true
44-
setupDokkaTemplatesDir(this)
45-
38+
dokka {
39+
dokkaPublications.configureEach {
40+
suppressInheritedMembers = true
41+
}
4642
dokkaSourceSets.configureEach {
4743
jdkVersion = 11
4844
includes.from("README.md")
49-
noStdlibLink = true
50-
51-
externalDocumentationLink {
52-
url = URL("https://kotlinlang.org/api/latest/jvm/stdlib/")
53-
packageListUrl = rootProject.projectDir.toPath().resolve("site/stdlib.package.list").toUri().toURL()
54-
}
55-
56-
// Something suspicious to figure out, probably legacy of earlier days
57-
if (!project.isMultiplatform) {
58-
dependsOn(project.configurations["compileClasspath"])
59-
}
60-
}
61-
62-
// Source links
63-
dokkaSourceSets.configureEach {
6445
sourceLink {
6546
localDirectory = rootDir
66-
remoteUrl = URL("https://github.com/kotlin/kotlinx.coroutines/tree/master")
67-
remoteLineSuffix ="#L"
68-
}
69-
}
70-
}
71-
}
72-
73-
private fun Project.configureExternalLinks() {
74-
tasks.withType<DokkaTaskPartial>() {
75-
dokkaSourceSets.configureEach {
76-
externalDocumentationLink {
77-
url = URL(coreModuleDocsUrl)
78-
packageListUrl = File(coreModuleDocsPackageList).toURI().toURL()
47+
remoteUrl("https://github.com/kotlin/kotlinx.coroutines/tree/master")
7948
}
8049
}
8150
}
@@ -90,10 +59,10 @@ private fun Project.configureExternalLinks() {
9059
* - Template setup: https://github.com/JetBrains/kotlin-web-site/blob/master/.teamcity/builds/apiReferences/kotlinx/coroutines/KotlinxCoroutinesPrepareDokkaTemplates.kt
9160
* - Templates repository: https://github.com/JetBrains/kotlin-web-site/tree/master/dokka-templates
9261
*/
93-
private fun Project.setupDokkaTemplatesDir(dokkaTask: AbstractDokkaTask) {
94-
dokkaTask.pluginsMapConfiguration = mapOf(
95-
"org.jetbrains.dokka.base.DokkaBase" to """{ "templatesDir" : "${
96-
project.rootProject.projectDir.toString().replace('\\', '/')
97-
}/dokka-templates" }"""
98-
)
62+
private fun Project.configureDokkaTemplatesDir() {
63+
dokka {
64+
pluginsConfiguration.html {
65+
templatesDir = rootDir.resolve("dokka-templates")
66+
}
67+
}
9968
}

buildSrc/src/main/kotlin/knit-conventions.gradle.kts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,10 @@ plugins {
55
knit {
66
siteRoot = "https://kotlinlang.org/api/kotlinx.coroutines"
77
moduleRoots = listOf(".", "integration", "reactive", "ui")
8-
moduleDocs = "build/dokka/htmlPartial"
9-
dokkaMultiModuleRoot = "build/dokka/htmlMultiModule/"
8+
moduleDocs = "build/dokka-module/html/module"
9+
dokkaMultiModuleRoot = "build/dokka/html/"
1010
}
1111

12-
tasks.named("knitPrepare").configure {
13-
val knitTask = this
14-
// In order for knit to operate, it should depend on and collect
15-
// all Dokka outputs from each module
16-
allprojects {
17-
val dokkaTasks = tasks.matching { it.name == "dokkaHtmlMultiModule" }
18-
knitTask.dependsOn(dokkaTasks)
19-
}
12+
tasks.named("knitPrepare") {
13+
dependsOn("dokkaGenerate")
2014
}

gradle.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ junit_version=4.12
1414
junit5_version=5.7.0
1515
knit_version=0.5.0
1616
lincheck_version=2.18.1
17-
dokka_version=1.9.20
17+
dokka_version=2.0.0
18+
org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled
19+
org.jetbrains.dokka.experimental.gradle.pluginMode.nowarn=true
20+
1821
byte_buddy_version=1.10.9
1922
reactor_version=3.4.1
2023
reactor_docs_version=3.4.5

kotlinx-coroutines-core/build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import org.gradle.kotlin.dsl.*
33
import org.gradle.kotlin.dsl.withType
44
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
55
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
6+
import org.jetbrains.dokka.gradle.tasks.DokkaBaseTask
67
import org.jetbrains.kotlin.gradle.plugin.mpp.*
78
import org.jetbrains.kotlin.gradle.targets.native.tasks.*
89
import org.jetbrains.kotlin.gradle.tasks.*
@@ -287,7 +288,7 @@ artifacts {
287288
}
288289

289290
// Workaround for https://github.com/Kotlin/dokka/issues/1833: make implicit dependency explicit
290-
tasks.named("dokkaHtmlPartial") {
291+
tasks.withType<DokkaBaseTask>() {
291292
dependsOn(jvmJar)
292293
}
293294

reactive/kotlinx-coroutines-rx2/build.gradle.kts

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,10 @@
1-
import org.jetbrains.dokka.gradle.DokkaTaskPartial
2-
import java.net.*
3-
41
dependencies {
52
api(project(":kotlinx-coroutines-reactive"))
63
testImplementation("org.reactivestreams:reactive-streams-tck:${version("reactive_streams")}")
74
api("io.reactivex.rxjava2:rxjava:${version("rxjava2")}")
85
}
96

10-
tasks.withType(DokkaTaskPartial::class) {
11-
dokkaSourceSets.configureEach {
12-
externalDocumentationLink {
13-
url = URL("http://reactivex.io/RxJava/2.x/javadoc/")
14-
packageListUrl = projectDir.toPath().resolve("package.list").toUri().toURL()
15-
}
16-
}
17-
}
7+
externalDocumentationLink("http://reactivex.io/RxJava/2.x/javadoc/")
188

199
val testNG by tasks.registering(Test::class) {
2010
useTestNG()

reactive/kotlinx-coroutines-rx3/build.gradle.kts

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,10 @@
1-
import org.jetbrains.dokka.gradle.DokkaTaskPartial
2-
import java.net.*
3-
41
dependencies {
52
api(project(":kotlinx-coroutines-reactive"))
63
testImplementation("org.reactivestreams:reactive-streams-tck:${version("reactive_streams")}")
74
api("io.reactivex.rxjava3:rxjava:${version("rxjava3")}")
85
}
96

10-
tasks.withType(DokkaTaskPartial::class) {
11-
dokkaSourceSets.configureEach {
12-
externalDocumentationLink {
13-
url = URL("https://reactivex.io/RxJava/3.x/javadoc/")
14-
packageListUrl = projectDir.toPath().resolve("package.list").toUri().toURL()
15-
}
16-
}
17-
}
7+
externalDocumentationLink("http://reactivex.io/RxJava/3.x/javadoc/")
188

199
val testNG by tasks.registering(Test::class) {
2010
useTestNG()

0 commit comments

Comments
 (0)