Skip to content

Commit 7f3a220

Browse files
authored
Switch to Dokka v2 (#9263)
* Update Dokka to v2 update configuration to use experimental V2 plugin mode and adjust documentation generation scripts.
1 parent 0f0615c commit 7f3a220

File tree

23 files changed

+85
-52
lines changed

23 files changed

+85
-52
lines changed

.github/workflows/build.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -722,6 +722,9 @@ jobs:
722722
- name: Setup Gradle
723723
uses: gradle/actions/setup-gradle@v5
724724

725+
- name: Test module-tests
726+
run: ./gradlew module-tests:test -PokhttpModuleTests=true
727+
725728
- name: Run with Jlink
726-
run: ./gradlew module-tests:imageRun
729+
run: ./gradlew module-tests:imageRun -PokhttpModuleTests=true
727730

.vscode/settings.json

Lines changed: 0 additions & 3 deletions
This file was deleted.

build.gradle.kts

Lines changed: 60 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import com.vanniktech.maven.publish.MavenPublishBaseExtension
55
import java.net.URI
66
import kotlinx.validation.ApiValidationExtension
77
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
8-
import org.jetbrains.dokka.gradle.DokkaTaskPartial
8+
import org.jetbrains.dokka.gradle.DokkaExtension
99
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
1010
import org.jetbrains.kotlin.gradle.targets.jvm.tasks.KotlinJvmTest
1111
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
@@ -38,7 +38,14 @@ buildscript {
3838
}
3939
}
4040

41-
apply(plugin = "org.jetbrains.dokka")
41+
val okhttpDokka: String by project
42+
val dokkaBuild = okhttpDokka.toBoolean()
43+
val platform = System.getProperty("okhttp.platform", "jdk9")
44+
val testJavaVersion = System.getProperty("test.java.version", "21").toInt()
45+
46+
if (dokkaBuild) {
47+
apply(plugin = "org.jetbrains.dokka")
48+
}
4249
apply(plugin = "com.diffplug.spotless")
4350

4451
configure<SpotlessExtension> {
@@ -78,8 +85,7 @@ allprojects {
7885
}
7986
}
8087

81-
val platform = System.getProperty("okhttp.platform", "jdk9")
82-
val testJavaVersion = System.getProperty("test.java.version", "21").toInt()
88+
8389

8490
/** Configure building for Java+Kotlin projects. */
8591
subprojects {
@@ -197,8 +203,7 @@ subprojects {
197203
}
198204
}
199205

200-
val platform = System.getProperty("okhttp.platform", "jdk9")
201-
val testJavaVersion = System.getProperty("test.java.version", "21").toInt()
206+
202207

203208
if (project.name != "okhttp") {
204209
val testRuntimeOnly: Configuration by configurations.getting
@@ -304,26 +309,39 @@ subprojects {
304309

305310
/** Configure publishing and signing for published Java and JavaPlatform subprojects. */
306311
subprojects {
307-
tasks.withType<DokkaTaskPartial>().configureEach {
308-
dokkaSourceSets.configureEach {
309-
reportUndocumented.set(false)
310-
skipDeprecated.set(true)
311-
jdkVersion.set(8)
312-
perPackageOption {
313-
matchingRegex.set(".*\\.internal.*")
314-
suppress.set(true)
315-
}
316-
if (project.file("Module.md").exists()) {
317-
includes.from(project.file("Module.md"))
318-
}
319-
externalDocumentationLink {
320-
url.set(URI.create("https://square.github.io/okio/3.x/okio/").toURL())
321-
packageListUrl.set(URI.create("https://square.github.io/okio/3.x/okio/okio/package-list").toURL())
312+
plugins.withId("com.vanniktech.maven.publish.base") {
313+
if (dokkaBuild) {
314+
apply(plugin = "org.jetbrains.dokka")
315+
316+
extensions.configure<DokkaExtension> {
317+
dokkaSourceSets.configureEach {
318+
reportUndocumented.set(false)
319+
skipDeprecated.set(true)
320+
jdkVersion.set(21)
321+
perPackageOption {
322+
matchingRegex.set(".*\\.internal.*")
323+
suppress.set(true)
324+
}
325+
if (project.file("Module.md").exists()) {
326+
includes.from(project.file("Module.md"))
327+
}
328+
externalDocumentationLinks.register("okio") {
329+
url.set(URI.create("https://square.github.io/okio/3.x/okio/"))
330+
packageListUrl.set(URI.create("https://square.github.io/okio/3.x/okio/okio/package-list"))
331+
}
332+
333+
externalDocumentationLinks.named("jdk") {
334+
url.set(URI.create("https://docs.oracle.com/en/java/javase/21/docs/api/"))
335+
packageListUrl.set(URI.create("https://docs.oracle.com/en/java/javase/21/docs/api/element-list"))
336+
}
337+
externalDocumentationLinks.register("androidRef") {
338+
url.set(URI.create("https://developer.android.com/reference/"))
339+
packageListUrl.set(URI.create("https://developer.android.com/reference/package-list"))
340+
}
341+
}
322342
}
323343
}
324-
}
325344

326-
plugins.withId("com.vanniktech.maven.publish.base") {
327345
configure<MavenPublishBaseExtension> {
328346
publishToMavenCentral(automaticRelease = true)
329347
signAllPublications()
@@ -376,3 +394,22 @@ plugins.withId("org.jetbrains.kotlin.jvm") {
376394
tasks.wrapper {
377395
distributionType = Wrapper.DistributionType.ALL
378396
}
397+
398+
if (dokkaBuild) {
399+
dependencies {
400+
add("dokka", project(":okhttp"))
401+
add("dokka", project(":okhttp-brotli"))
402+
add("dokka", project(":okhttp-coroutines"))
403+
add("dokka", project(":okhttp-dnsoverhttps"))
404+
add("dokka", project(":okhttp-java-net-cookiejar"))
405+
add("dokka", project(":logging-interceptor"))
406+
add("dokka", project(":okhttp-sse"))
407+
add("dokka", project(":okhttp-tls"))
408+
add("dokka", project(":okhttp-urlconnection"))
409+
add("dokka", project(":okhttp-zstd"))
410+
add("dokka", project(":mockwebserver"))
411+
add("dokka", project(":mockwebserver3"))
412+
add("dokka", project(":mockwebserver3-junit4"))
413+
add("dokka", project(":mockwebserver3-junit5"))
414+
}
415+
}

gradle.properties

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,8 @@ androidBuild=false
88
graalBuild=false
99
loomBuild=false
1010
containerTests=false
11+
okhttpModuleTests=false
12+
okhttpDokka=false
1113

1214
org.gradle.jvmargs='-Dfile.encoding=UTF-8'
15+

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ gradlePlugin-animalsniffer = "ru.vyarus:gradle-animalsniffer-plugin:2.0.1"
5353
gradlePlugin-binaryCompatibilityValidator = "org.jetbrains.kotlinx.binary-compatibility-validator:org.jetbrains.kotlinx.binary-compatibility-validator.gradle.plugin:0.18.1"
5454
gradlePlugin-bnd = { module = "biz.aQute.bnd:biz.aQute.bnd.gradle", version.ref = "biz-aQute-bnd" }
5555
gradlePlugin-burst = { module = "app.cash.burst:burst-gradle-plugin", version = "2.10.2" }
56-
gradlePlugin-dokka = "org.jetbrains.dokka:dokka-gradle-plugin:2.0.0"
56+
gradlePlugin-dokka = "org.jetbrains.dokka:dokka-gradle-plugin:2.1.0"
5757
gradlePlugin-errorprone = "net.ltgt.gradle:gradle-errorprone-plugin:4.3.0"
5858
gradlePlugin-graalvmBuildTools = "org.graalvm.buildtools.native:org.graalvm.buildtools.native.gradle.plugin:0.11.3"
5959
gradlePlugin-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "org-jetbrains-kotlin" }

mockwebserver-deprecated/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import com.vanniktech.maven.publish.KotlinJvm
33

44
plugins {
55
kotlin("jvm")
6-
id("org.jetbrains.dokka")
76
id("com.vanniktech.maven.publish.base")
87
id("binary-compatibility-validator")
98
}

mockwebserver-junit4/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import com.vanniktech.maven.publish.KotlinJvm
33

44
plugins {
55
kotlin("jvm")
6-
id("org.jetbrains.dokka")
76
id("com.vanniktech.maven.publish.base")
87
id("binary-compatibility-validator")
98
}

mockwebserver-junit5/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import com.vanniktech.maven.publish.KotlinJvm
33

44
plugins {
55
kotlin("jvm")
6-
id("org.jetbrains.dokka")
76
id("com.vanniktech.maven.publish.base")
87
id("binary-compatibility-validator")
98
}

mockwebserver/build.gradle.kts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
import com.vanniktech.maven.publish.JavadocJar
22
import com.vanniktech.maven.publish.KotlinJvm
3-
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
43

54
plugins {
65
kotlin("jvm")
7-
id("org.jetbrains.dokka")
86
id("com.vanniktech.maven.publish.base")
97
id("binary-compatibility-validator")
108
}

module-tests/build.gradle.kts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ plugins {
88
dependencies {
99
implementation(projects.okhttp)
1010
implementation(projects.loggingInterceptor)
11+
12+
// Force version 26.0.2-1 which is a proper JPMS module, unlike transitive 13.0
13+
implementation("org.jetbrains:annotations:26.0.2-1")
1114

1215
testImplementation(projects.okhttp)
1316
testImplementation(projects.loggingInterceptor)
@@ -33,9 +36,6 @@ jlinkApplication {
3336
}
3437

3538
extraJavaModuleInfo {
36-
module("org.jetbrains:annotations", "org.jetbrains.annotations") {
37-
exportAllPackages()
38-
}
3939
module("com.squareup.okio:okio-jvm", "okio") {
4040
exportAllPackages()
4141
requires("kotlin.stdlib")
@@ -46,6 +46,12 @@ extraJavaModuleInfo {
4646
}
4747
}
4848

49+
// Exclude dokka from all configurations
50+
// to attempt to avoid https://github.com/gradlex-org/extra-java-module-info/issues/221
51+
configurations.all {
52+
exclude(group = "org.jetbrains.dokka")
53+
}
54+
4955
val testJavaVersion = System.getProperty("test.java.version", "21").toInt()
5056

5157
tasks.withType<Test> {

0 commit comments

Comments
 (0)