From 24966b453702b09b5c8830a11fb20f5627339dd7 Mon Sep 17 00:00:00 2001 From: Aleksander Nowakowski Date: Tue, 17 Dec 2024 23:37:19 +0100 Subject: [PATCH] Migration to Dokka V2 --- README.md | 22 +++++++++++---- .../kotlin/AndroidNexusRepositoryPlugin.kt | 26 ++++++++--------- .../main/kotlin/JvmNexusRepositoryPlugin.kt | 28 ++++++++----------- 3 files changed, 40 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 6e4b21d..51b061d 100644 --- a/README.md +++ b/README.md @@ -26,9 +26,6 @@ List of plugins currently available in the repository. This plugin applies `no.nordicsemi.android.plugin.application` and adds Compose and Material3 dependency. - Since version 2.1 [`enableStrongSkippingMode`](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-compiler.html#enablestrongskippingmode) is - [enabled](https://github.com/NordicSemiconductor/Android-Gradle-Plugins/blob/6ee70d9f2fb2c2c8474067845eac05308740afa8/plugins/src/main/kotlin/no/nordicsemi/android/buildlogic/AndroidCompose.kt#L66). - 3. [no.nordicsemi.android.plugin.library](plugins/src/main/kotlin/AndroidLibraryConventionPlugin.kt) This plugin does the following: @@ -42,9 +39,6 @@ List of plugins currently available in the repository. This plugin applies `no.nordicsemi.android.plugin.library` and adds Compose and Material3 dependency. - Since version 2.1 [`enableStrongSkippingMode`](https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-compiler.html#enablestrongskippingmode) is - [enabled](https://github.com/NordicSemiconductor/Android-Gradle-Plugins/blob/6ee70d9f2fb2c2c8474067845eac05308740afa8/plugins/src/main/kotlin/no/nordicsemi/android/buildlogic/AndroidCompose.kt#L66). - 5. [no.nordicsemi.android.plugin.kotlin](plugins/src/main/kotlin/AndroidNexusRepositoryPlugin.kt) This plugin applies `org.jetbrains.kotlin.android` and configures Kotlin compiler. @@ -67,6 +61,14 @@ List of plugins currently available in the repository. Creates `publish` and `releaseStagingRepositories` tasks using `maven-publish`. +Since 2.6 Dokka V2 is enabled. + +Add +``` +org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled +``` +to _gradle.properties_ file. + ### JVM plugins 1. [no.nordicsemi.jvm.plugin.kotlin](plugins/src/main/kotlin/JvmKotlinConventionPlugin.kt) (since 2.1) @@ -83,6 +85,14 @@ and are available by their ids and version number. > [!Note] > Version 2.1 altered ids of the plugins by replacing `gradle` with `plugin`. +Since 2.6 Dokka V2 is enabled. + +Add +``` +org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled +``` +to _gradle.properties_ file. + ## Version catalog ![Maven Central Version](https://img.shields.io/maven-central/v/no.nordicsemi.android.gradle/version-catalog) diff --git a/plugins/src/main/kotlin/AndroidNexusRepositoryPlugin.kt b/plugins/src/main/kotlin/AndroidNexusRepositoryPlugin.kt index 43c5cfe..a7d0c38 100644 --- a/plugins/src/main/kotlin/AndroidNexusRepositoryPlugin.kt +++ b/plugins/src/main/kotlin/AndroidNexusRepositoryPlugin.kt @@ -43,16 +43,14 @@ import org.gradle.kotlin.dsl.extra import org.gradle.kotlin.dsl.get import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.register -import org.gradle.kotlin.dsl.withType import org.gradle.plugins.signing.SigningExtension -import org.jetbrains.dokka.gradle.DokkaTask -import org.jetbrains.kotlin.gradle.tasks.Kapt +import org.jetbrains.dokka.gradle.DokkaExtension class AndroidNexusRepositoryPlugin : Plugin { override fun apply(target: Project) { with(target) { - pluginManager.apply { + with(pluginManager) { apply("com.android.library") apply("maven-publish") apply("signing") @@ -65,6 +63,7 @@ class AndroidNexusRepositoryPlugin : Plugin { val nexusPluginExt = extensions.create("nordicNexusPublishing", NexusRepositoryPluginExt::class.java) val library = extensions.getByType() val signing = extensions.getByType() + val dokka = extensions.getByType() // The signing configuration will be user by signing plugin. extra.set("signing.keyId", System.getenv("GPG_SIGNING_KEY")) @@ -82,18 +81,17 @@ class AndroidNexusRepositoryPlugin : Plugin { } // Instead, configure Dokka to generate HTML docs. - tasks.withType().configureEach { - dependsOn(tasks.withType()) + dokka.apply { dokkaSourceSets.configureEach { - noAndroidSdkLink.set(false) + enableAndroidDocumentationLink.set(true) + } + dokkaPublications.named("html") { + tasks.register("dokkaHtmlJar").configure { + dependsOn(tasks.named("dokkaGenerate")) + from(outputDirectory) + archiveClassifier.set("html-docs") + } } - } - - tasks.register("dokkaHtmlJar").configure { - val dokkaHtml = tasks.named("dokkaHtml", DokkaTask::class.java) - dependsOn(dokkaHtml) - from(dokkaHtml.flatMap { it.outputDirectory }) - archiveClassifier.set("html-docs") } afterEvaluate { diff --git a/plugins/src/main/kotlin/JvmNexusRepositoryPlugin.kt b/plugins/src/main/kotlin/JvmNexusRepositoryPlugin.kt index e6987d7..5036b06 100644 --- a/plugins/src/main/kotlin/JvmNexusRepositoryPlugin.kt +++ b/plugins/src/main/kotlin/JvmNexusRepositoryPlugin.kt @@ -43,16 +43,14 @@ import org.gradle.kotlin.dsl.extra import org.gradle.kotlin.dsl.get import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.register -import org.gradle.kotlin.dsl.withType import org.gradle.plugins.signing.SigningExtension -import org.jetbrains.dokka.gradle.DokkaTask -import org.jetbrains.kotlin.gradle.tasks.Kapt +import org.jetbrains.dokka.gradle.DokkaExtension class JvmNexusRepositoryPlugin : Plugin { override fun apply(target: Project) { with(target) { - pluginManager.apply { + with(pluginManager) { apply("org.jetbrains.kotlin.jvm") apply("maven-publish") apply("signing") @@ -65,6 +63,7 @@ class JvmNexusRepositoryPlugin : Plugin { val nexusPluginExt = extensions.create("nordicNexusPublishing", NexusRepositoryPluginExt::class.java) val library = extensions.getByType() val signing = extensions.getByType() + val dokka = extensions.getByType() // The signing configuration will be user by signing plugin. extra.set("signing.keyId", System.getenv("GPG_SIGNING_KEY")) @@ -78,20 +77,17 @@ class JvmNexusRepositoryPlugin : Plugin { // library.withJavadocJar() // Instead, configure Dokka to generate HTML docs. - tasks.withType().configureEach { - dependsOn(tasks.withType()) + dokka.apply { dokkaSourceSets.configureEach { - noAndroidSdkLink.set(false) + enableAndroidDocumentationLink.set(true) + } + dokkaPublications.named("html") { + tasks.register("dokkaHtmlJar").configure { + dependsOn(tasks.named("dokkaGenerate")) + from(outputDirectory) + archiveClassifier.set("javadoc") + } } - } - - tasks.register("dokkaHtmlJar").configure { - val dokkaHtml = tasks.named("dokkaHtml", DokkaTask::class.java) - dependsOn(dokkaHtml) - from(dokkaHtml.flatMap { it.outputDirectory }) - // Maven Central requires JVM libraries to have [module]-[version]-javadoc.jar file. - // Let's put Dokka HTML docs into the javadoc file. - archiveClassifier.set("javadoc") } afterEvaluate {