Allow to reference Gradle API javadoc in generated documentation

^KT-55520 In Progress
This commit is contained in:
Yahor Berdnikau
2023-01-12 16:54:53 +01:00
committed by Space Team
parent 4de60879f0
commit d3ecb9a75f
2 changed files with 36 additions and 10 deletions
+33 -9
View File
@@ -28,11 +28,14 @@ import org.gradle.kotlin.dsl.*
import org.gradle.plugin.devel.plugins.JavaGradlePluginPlugin
import org.jetbrains.dokka.DokkaVersion
import org.jetbrains.dokka.gradle.DokkaTask
import org.jetbrains.dokka.gradle.GradleExternalDocumentationLinkBuilder
import org.jetbrains.kotlin.gradle.dsl.KotlinSingleJavaTargetExtension
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import plugins.configureDefaultPublishing
import plugins.configureKotlinPomAttributes
import java.net.URL
import java.util.*
/**
@@ -44,14 +47,15 @@ import java.util.*
enum class GradlePluginVariant(
val sourceSetName: String,
val minimalSupportedGradleVersion: String,
val gradleApiVersion: String
val gradleApiVersion: String,
val gradleApiJavadocUrl: String
) {
GRADLE_MIN("main", "6.7", "6.9"),
GRADLE_70("gradle70", "7.0", "7.0"),
GRADLE_71("gradle71", "7.1", "7.1"),
GRADLE_74("gradle74", "7.4", "7.4"),
GRADLE_75("gradle75", "7.5", "7.5"),
GRADLE_76("gradle76", "7.6", "7.6"),
GRADLE_MIN("main", "6.8.3", "6.9", "https://docs.gradle.org/6.9.3/javadoc/"),
GRADLE_70("gradle70", "7.0", "7.0", "https://docs.gradle.org/7.0.2/javadoc/"),
GRADLE_71("gradle71", "7.1", "7.1", "https://docs.gradle.org/7.1.1/javadoc/"),
GRADLE_74("gradle74", "7.4", "7.4", "https://docs.gradle.org/7.4.2/javadoc/"),
GRADLE_75("gradle75", "7.5", "7.5", "https://docs.gradle.org/7.5.1/javadoc/"),
GRADLE_76("gradle76", "7.6", "7.6", "https://docs.gradle.org/7.6/javadoc/"),
}
val commonSourceSetName = "common"
@@ -584,7 +588,9 @@ fun Project.addBomCheckTask() {
}
}
fun Project.configureDokkaPublication() {
fun Project.configureDokkaPublication(
shouldLinkGradleApi: Boolean = false
) {
if (!kotlinBuildProperties.publishGradlePluginsJavadoc) return
plugins.apply("org.jetbrains.dokka")
@@ -610,11 +616,21 @@ fun Project.configureDokkaPublication() {
dokkaSourceSets {
named(commonSourceSet.name) {
suppress.set(false)
jdkVersion.set(8)
}
named(variantSourceSet.name) {
dependsOn(commonSourceSet)
suppress.set(false)
jdkVersion.set(8)
if (shouldLinkGradleApi) {
externalDocumentationLink {
url.set(URL(pluginVariant.gradleApiJavadocUrl))
addWorkaroundForElementList(pluginVariant)
}
}
}
}
}
@@ -624,4 +640,12 @@ fun Project.configureDokkaPublication() {
}
}
}
}
}
// Workaround for https://github.com/Kotlin/dokka/issues/2097
// Gradle 7.6 javadoc does not have published 'package-list' file
private fun GradleExternalDocumentationLinkBuilder.addWorkaroundForElementList(pluginVariant: GradlePluginVariant) {
if (pluginVariant == GradlePluginVariant.GRADLE_76) {
packageListUrl.set(URL("${pluginVariant.gradleApiJavadocUrl}element-list"))
}
}
@@ -4,7 +4,9 @@ plugins {
id("org.jetbrains.kotlinx.binary-compatibility-validator")
}
configureDokkaPublication()
configureDokkaPublication(
shouldLinkGradleApi = true
)
dependencies {
commonApi(platform(project(":kotlin-gradle-plugins-bom")))