Skip to content

Commit 378d6a3

Browse files
authored
Update to dokka v2 (#317)
* Update to dokka v2 * Fix a warning
1 parent 443ae9a commit 378d6a3

13 files changed

Lines changed: 113 additions & 59 deletions

.github/workflows/gradle.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
- uses: actions/setup-java@v3
2121
with:
2222
distribution: 'zulu'
23-
java-version: '21'
23+
java-version: '23'
2424

2525
- uses: actions/setup-python@v5
2626
with:

.github/workflows/pages.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
- uses: actions/setup-java@v3
2323
with:
2424
distribution: 'zulu'
25-
java-version: '21'
25+
java-version: '23'
2626

2727
- uses: actions/setup-python@v5
2828
with:

.github/workflows/update-gradle-wrapper.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
- uses: actions/setup-java@v3
1616
with:
1717
distribution: 'zulu'
18-
java-version: '21'
18+
java-version: '23'
1919

2020
- uses: actions/setup-python@v5
2121
with:

build-logic/build.gradle.kts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,31 @@
1+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
2+
13
plugins {
24
kotlin("jvm") version embeddedKotlinVersion
35
`kotlin-dsl`
46
`version-catalog`
57
alias(libs.plugins.projectAccessors)
68
}
79

10+
java {
11+
toolchain {
12+
languageVersion = JavaLanguageVersion.of(libs.versions.java.get())
13+
vendor.set(JvmVendorSpec.AZUL)
14+
}
15+
sourceCompatibility = JavaVersion.VERSION_22
16+
targetCompatibility = sourceCompatibility
17+
}
18+
19+
kotlin {
20+
jvmToolchain {
21+
languageVersion.set(JavaLanguageVersion.of(libs.versions.java.get()))
22+
vendor.set(JvmVendorSpec.AZUL)
23+
}
24+
compilerOptions {
25+
jvmTarget.set(JvmTarget.JVM_22)
26+
}
27+
}
28+
829
dependencies {
930
implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location))
1031
implementation(libs.projectAccessors)
@@ -14,4 +35,5 @@ dependencies {
1435
api(libs.testLogger)
1536
api(libs.kotlin.jvm.gradle)
1637
api(libs.sonatypePublishFix)
38+
api(libs.ksp.gradlePlugin)
1739
}
Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
1-
2-
import org.gradle.accessors.dm.LibrariesForLibs
1+
import com.google.devtools.ksp.gradle.KspAATask
32

43
plugins {
54
id("org.jetbrains.dokka")
5+
id("org.jetbrains.dokka-javadoc")
66
}
77

8-
val libs = the<LibrariesForLibs>()
9-
10-
dependencies {
11-
dokkaPlugin(libs.dokka.versioningPlugin)
8+
dokka {
9+
dokkaSourceSets.configureEach {
10+
suppressGeneratedFiles = true
11+
tasks.withType<KspAATask>().configureEach {
12+
suppressedFiles.from(fileTree(kspConfig.outputBaseDir))
13+
}
14+
perPackageOption {
15+
matchingRegex = "hilt_aggregated_deps*"
16+
suppress = true
17+
}
18+
}
1219
}

build-logic/src/main/kotlin/library.gradle.kts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import com.android.build.api.variant.HasTestFixturesBuilder
1010
import com.android.build.api.variant.HasUnitTestBuilder
1111
import org.gradle.accessors.dm.LibrariesForLibs
1212
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
13+
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
1314
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
1415

1516
val libs = the<LibrariesForLibs>()
@@ -121,6 +122,12 @@ pluginManager.withPlugin("org.jetbrains.kotlin.jvm") {
121122
tasks.withType<Test>().configureEach {
122123
useJUnitPlatform()
123124
}
125+
configure<KotlinJvmProjectExtension> {
126+
jvmToolchain {
127+
languageVersion.set(JavaLanguageVersion.of(libs.versions.java.get()))
128+
vendor.set(JvmVendorSpec.AZUL)
129+
}
130+
}
124131
dependencies {
125132
"testImplementation"(libs.bundles.jvmTesting)
126133
}
@@ -130,7 +137,7 @@ pluginManager.withPlugin("org.jetbrains.kotlin.jvm") {
130137
plugins.withType<JavaBasePlugin>().configureEach {
131138
extensions.configure<JavaPluginExtension> {
132139
toolchain {
133-
languageVersion.set(JavaLanguageVersion.of(21))
140+
languageVersion.set(JavaLanguageVersion.of(libs.versions.java.get()))
134141
vendor.set(JvmVendorSpec.AZUL)
135142
}
136143
}

build-logic/src/main/kotlin/library.publishing.gradle.kts

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
import com.android.build.gradle.LibraryExtension
33
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
44
import org.gradle.accessors.dm.LibrariesForLibs
5-
import org.jetbrains.dokka.gradle.AbstractDokkaLeafTask
6-
import se.ansman.dagger.auto.gradle.cachedProvider
75
import se.ansman.dagger.auto.gradle.execWithOutput
86
import se.ansman.dagger.auto.gradle.mapNullable
97

@@ -16,12 +14,13 @@ plugins {
1614

1715
val libs = the<LibrariesForLibs>()
1816

19-
val gitCommit = cachedProvider {
20-
project.execWithOutput {
17+
val gitCommit = project
18+
.execWithOutput {
2119
commandLine("git", "rev-parse", "HEAD")
2220
workingDir = project.rootDir
23-
}.trim()
24-
}
21+
}
22+
.map { it.trim() }
23+
2524

2625
fun repo(path: String = "") = "https://github.com/ansman/auto-dagger$path"
2726

@@ -30,20 +29,17 @@ val remoteSource: Provider<String> = providers.gradleProperty("version")
3029
.orElse(gitCommit)
3130
.map { repo("/blob/$it") }
3231

33-
tasks.withType<AbstractDokkaLeafTask>().configureEach {
32+
dokka {
3433
val projectPath = project.path.removePrefix(":").replace(':', '/')
3534
dokkaSourceSets.configureEach {
3635
reportUndocumented.set(false)
3736
sourceLink {
3837
localDirectory.set(project.file("src/main/kotlin"))
3938
remoteUrl.set(remoteSource.map { remoteSource ->
40-
uri("$remoteSource/$projectPath/src/main/kotlin").toURL()
39+
uri("$remoteSource/$projectPath/src/main/kotlin")
4140
})
4241
remoteLineSuffix.set("#L")
4342
}
44-
externalDocumentationLink(
45-
url = "https://javadoc.io/doc/com.google.dagger/dagger/${libs.versions.dagger}/",
46-
)
4743
}
4844
}
4945

@@ -92,7 +88,7 @@ tasks.register("publishSnapshot") {
9288
}
9389

9490
val javadocJar by tasks.registering(Jar::class) {
95-
from(tasks.dokkaJavadoc)
91+
from(tasks.dokkaGeneratePublicationJavadoc)
9692
archiveClassifier.set("javadoc")
9793
}
9894

build-logic/src/main/kotlin/se/ansman/dagger/auto/gradle/utils.kt

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,16 @@ import org.gradle.api.provider.Provider
66
import org.gradle.process.ExecSpec
77
import java.io.ByteArrayOutputStream
88

9-
internal fun Project.execWithOutput(configure: ExecSpec.() -> Unit): String {
10-
val output = ByteArrayOutputStream()
11-
project
12-
.exec {
13-
configure()
14-
standardOutput = output
9+
internal fun Project.execWithOutput(configure: ExecSpec.() -> Unit): Provider<String> =
10+
project.providers
11+
.exec(configure)
12+
.run {
13+
result.flatMap {
14+
it.assertNormalExitValue()
15+
it.rethrowFailure()
16+
standardOutput.asText
17+
}
1518
}
16-
.assertNormalExitValue()
17-
.rethrowFailure()
18-
return output.toByteArray().toString(Charsets.UTF_8)
19-
}
20-
21-
internal fun <T> Project.cachedProvider(producer: () -> T): Provider<T> =
22-
provider(lazy(producer)::value)
2319

2420
internal fun ExtraPropertiesExtension.getOrPut(name: String, block: () -> String): String =
2521
if (has(name)) get(name) as String else block().also { set(name, it) }

build.gradle.kts

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import org.jetbrains.dokka.gradle.DokkaMultiModuleTask
2-
import org.jetbrains.dokka.versioning.VersioningConfiguration
3-
import org.jetbrains.dokka.versioning.VersioningPlugin
1+
@file:Suppress("UnstableApiUsage")
2+
43
import ru.vyarus.gradle.plugin.python.task.BasePythonTask
54

65
plugins {
@@ -31,6 +30,7 @@ val latestRelease: String = providers.gradleProperty("latestRelease").get()
3130

3231
val isSnapshotVersion = version.endsWith("-SNAPSHOT")
3332
val dokkaProjects = subprojects
33+
.map { it.isolated }
3434
.filter { ":compiler" !in it.path && ":tests" !in it.path }
3535
.toSet()
3636

@@ -49,7 +49,9 @@ apiValidation {
4949
)
5050
)
5151
ignoredProjects.addAll(
52-
subprojects.asSequence()
52+
subprojects
53+
.map { it.isolated }
54+
.asSequence()
5355
.minus(dokkaProjects)
5456
.map { it.name }
5557
)
@@ -92,7 +94,7 @@ mkdocs {
9294

9395
gitPublish {
9496
contents {
95-
from(tasks.dokkaHtmlMultiModule.map { it.outputDirectory }) {
97+
from(tasks.dokkaGeneratePublicationHtml.map { it.outputDirectory }) {
9698
into(dokkaDocsPath)
9799
}
98100
}
@@ -117,41 +119,45 @@ tasks.mkdocsBuild {
117119
}
118120

119121
tasks.gitPublishReset {
120-
dependsOn(tasks.dokkaHtmlMultiModule)
122+
dependsOn(tasks.dokkaGeneratePublicationHtml)
121123
}
122124

123125
python {
124126
virtualenvVersion = "20.16.7"
125127
}
126128

127-
tasks.register("check") {
129+
tasks.check {
128130
dependsOn(*gradle.includedBuilds.map { it.task(":check") }.toTypedArray())
129131
dependsOn(tasks.mkdocsBuild)
130132
}
131133

132-
tasks.register<Delete>("clean") {
133-
delete(layout.buildDirectory)
134-
}
135-
136134
val olderVersionsFolder = file("src/doc/dokka/")
137-
val versionCurrentDocs by tasks.registering(DokkaMultiModuleTask::class) {
135+
tasks.register<Copy>("versionCurrentDocs") {
138136
enabled = !isSnapshotVersion
139-
outputDirectory.set(olderVersionsFolder.resolve(version))
140-
pluginConfiguration<VersioningPlugin, VersioningConfiguration> {
141-
version = providers.gradleProperty("version").get()
142-
}
143-
addChildTasks(dokkaProjects, "dokkaHtmlPartial")
137+
from(tasks.dokkaGeneratePublicationHtml)
138+
into(olderVersionsFolder.resolve(version))
139+
exclude("older")
144140
}
145141

146142
dependencies {
147143
dokkaPlugin(libs.dokka.allModulesPagePlugin)
148-
}
149-
150-
tasks.dokkaHtmlMultiModule {
151-
removeChildTasks(subprojects - dokkaProjects)
152-
pluginConfiguration<VersioningPlugin, VersioningConfiguration> {
153-
version = providers.gradleProperty("version").get()
154-
olderVersionsDir = olderVersionsFolder
144+
dokkaPlugin(libs.dokka.versioningPlugin)
145+
dokka(projects.android)
146+
dokka(projects.android.api)
147+
dokka(projects.android.testing)
148+
dokka(projects.core)
149+
dokka(projects.thirdParty.androidx.room)
150+
dokka(projects.thirdParty.androidx.viewmodel)
151+
dokka(projects.thirdParty.ktorfit)
152+
dokka(projects.thirdParty.retrofit)
153+
}
154+
155+
dokka {
156+
pluginsConfiguration {
157+
versioning {
158+
version = providers.gradleProperty("version").get()
159+
olderVersionsDir = olderVersionsFolder
160+
}
155161
}
156162
}
157163

gradle.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ org.gradle.vfs.watch=true
44
org.gradle.caching=true
55
org.gradle.configuration.cache=true
66
org.gradle.configuration-cache.parallel=true
7+
org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled
8+
org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true
79

810
kotlin.code.style=official
911

0 commit comments

Comments
 (0)