Skip to content

Commit baaf803

Browse files
authored
Merge pull request #249 from NordicSemiconductor/migration/dokka
Migration from JavaDoc to Dokka for released modules
2 parents 7c398da + 92b70e5 commit baaf803

File tree

4 files changed

+55
-5
lines changed

4 files changed

+55
-5
lines changed

gradle/libs.versions.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ nordic-mcumgr = "1.9.2"
7979
nordic-scanner = "1.6.0"
8080
nordic-common = "2.0.0"
8181
nordic-memfault = "1.0.2"
82-
nordicPlugins = "2.2.4"
82+
nordicPlugins = "2.3"
8383
dokkaPlugin = "1.9.20"
8484
googleServicesPlugins = "4.4.0"
8585
firebaseCrashlyticsPlugins = "2.9.9"
@@ -244,6 +244,7 @@ nordic-blek-uiscanner = { group = "no.nordicsemi.android.kotlin.ble", name = "ui
244244
android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "androidGradlePlugin" }
245245
kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" }
246246
compose-gradlePlugin = { module = "org.jetbrains.kotlin:compose-compiler-gradle-plugin", version.ref = "kotlin" }
247+
dokka-gradlePlugin = { group = "org.jetbrains.dokka", name = "dokka-gradle-plugin", version.ref = "dokkaPlugin" }
247248

248249
[plugins]
249250
nordic-application = { id = "no.nordicsemi.android.plugin.application", version.ref = "nordicPlugins" }

plugins/build.gradle.kts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import org.jetbrains.kotlin.js.translate.context.Namer.kotlin
2-
31
/*
42
* Copyright (c) 2022, Nordic Semiconductor
53
* All rights reserved.
@@ -58,6 +56,7 @@ dependencies {
5856
compileOnly(libs.android.gradlePlugin)
5957
compileOnly(libs.kotlin.gradlePlugin)
6058
compileOnly(libs.compose.gradlePlugin)
59+
compileOnly(libs.dokka.gradlePlugin)
6160
}
6261

6362
gradlePlugin {

plugins/src/main/kotlin/AndroidNexusRepositoryPlugin.kt

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,15 @@ import org.gradle.api.Plugin
3838
import org.gradle.api.Project
3939
import org.gradle.api.publish.PublishingExtension
4040
import org.gradle.api.publish.maven.MavenPublication
41+
import org.gradle.api.tasks.bundling.Jar
4142
import org.gradle.kotlin.dsl.extra
4243
import org.gradle.kotlin.dsl.get
4344
import org.gradle.kotlin.dsl.getByType
45+
import org.gradle.kotlin.dsl.register
46+
import org.gradle.kotlin.dsl.withType
4447
import org.gradle.plugins.signing.SigningExtension
48+
import org.jetbrains.dokka.gradle.DokkaTask
49+
import org.jetbrains.kotlin.gradle.tasks.Kapt
4550

4651
class AndroidNexusRepositoryPlugin : Plugin<Project> {
4752

@@ -51,6 +56,7 @@ class AndroidNexusRepositoryPlugin : Plugin<Project> {
5156
apply("com.android.library")
5257
apply("maven-publish")
5358
apply("signing")
59+
apply("org.jetbrains.dokka")
5460
}
5561

5662
// Default Nordic group.
@@ -69,10 +75,27 @@ class AndroidNexusRepositoryPlugin : Plugin<Project> {
6975
library.publishing {
7076
singleVariant("release") {
7177
withSourcesJar()
72-
withJavadocJar()
78+
// Javadoc fails with Java 17:
79+
// https://github.com/Kotlin/dokka/issues/2956
80+
// withJavadocJar()
7381
}
7482
}
7583

84+
// Instead, configure Dokka to generate HTML docs.
85+
tasks.withType<DokkaTask>().configureEach {
86+
dependsOn(tasks.withType<Kapt>())
87+
dokkaSourceSets.configureEach {
88+
noAndroidSdkLink.set(false)
89+
}
90+
}
91+
92+
tasks.register<Jar>("dokkaHtmlJar").configure {
93+
val dokkaHtml = tasks.named("dokkaHtml", DokkaTask::class.java)
94+
dependsOn(dokkaHtml)
95+
from(dokkaHtml.flatMap { it.outputDirectory })
96+
archiveClassifier.set("html-docs")
97+
}
98+
7699
afterEvaluate {
77100
publishing {
78101
repositories {
@@ -100,6 +123,8 @@ class AndroidNexusRepositoryPlugin : Plugin<Project> {
100123
from(nexusPluginExt)
101124
packaging = "aar"
102125
}
126+
// Add Dokka HTML docs.
127+
artifact(tasks.named("dokkaHtmlJar"))
103128
}
104129
// This task will add *.asc files to the publication for all artifacts.
105130
signing.sign(publication)

plugins/src/main/kotlin/JvmNexusRepositoryPlugin.kt

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,15 @@ import org.gradle.api.Project
3838
import org.gradle.api.plugins.JavaPluginExtension
3939
import org.gradle.api.publish.PublishingExtension
4040
import org.gradle.api.publish.maven.MavenPublication
41+
import org.gradle.api.tasks.bundling.Jar
4142
import org.gradle.kotlin.dsl.extra
4243
import org.gradle.kotlin.dsl.get
4344
import org.gradle.kotlin.dsl.getByType
45+
import org.gradle.kotlin.dsl.register
46+
import org.gradle.kotlin.dsl.withType
4447
import org.gradle.plugins.signing.SigningExtension
48+
import org.jetbrains.dokka.gradle.DokkaTask
49+
import org.jetbrains.kotlin.gradle.tasks.Kapt
4550

4651
class JvmNexusRepositoryPlugin : Plugin<Project> {
4752

@@ -51,6 +56,7 @@ class JvmNexusRepositoryPlugin : Plugin<Project> {
5156
apply("org.jetbrains.kotlin.jvm")
5257
apply("maven-publish")
5358
apply("signing")
59+
apply("org.jetbrains.dokka")
5460
}
5561

5662
// Default Nordic group.
@@ -67,7 +73,24 @@ class JvmNexusRepositoryPlugin : Plugin<Project> {
6773

6874
// Create a software component with the release variant.
6975
library.withSourcesJar()
70-
library.withJavadocJar()
76+
// Javadoc fails with Java 17:
77+
// https://github.com/Kotlin/dokka/issues/2956
78+
// library.withJavadocJar()
79+
80+
// Instead, configure Dokka to generate HTML docs.
81+
tasks.withType<DokkaTask>().configureEach {
82+
dependsOn(tasks.withType<Kapt>())
83+
dokkaSourceSets.configureEach {
84+
noAndroidSdkLink.set(false)
85+
}
86+
}
87+
88+
tasks.register<Jar>("dokkaHtmlJar").configure {
89+
val dokkaHtml = tasks.named("dokkaHtml", DokkaTask::class.java)
90+
dependsOn(dokkaHtml)
91+
from(dokkaHtml.flatMap { it.outputDirectory })
92+
archiveClassifier.set("html-docs")
93+
}
7194

7295
afterEvaluate {
7396
publishing {
@@ -96,6 +119,8 @@ class JvmNexusRepositoryPlugin : Plugin<Project> {
96119
from(nexusPluginExt)
97120
packaging = "jar"
98121
}
122+
// Add Dokka HTML docs.
123+
artifact(tasks.named("dokkaHtmlJar"))
99124
}
100125
// This task will add *.asc files to the publication for all artifacts.
101126
signing.sign(publication)

0 commit comments

Comments
 (0)