Allow to reference Gradle API javadoc in generated documentation
^KT-55520 In Progress
This commit is contained in:
committed by
Space Team
parent
4de60879f0
commit
d3ecb9a75f
@@ -28,11 +28,14 @@ import org.gradle.kotlin.dsl.*
|
|||||||
import org.gradle.plugin.devel.plugins.JavaGradlePluginPlugin
|
import org.gradle.plugin.devel.plugins.JavaGradlePluginPlugin
|
||||||
import org.jetbrains.dokka.DokkaVersion
|
import org.jetbrains.dokka.DokkaVersion
|
||||||
import org.jetbrains.dokka.gradle.DokkaTask
|
import org.jetbrains.dokka.gradle.DokkaTask
|
||||||
|
import org.jetbrains.dokka.gradle.GradleExternalDocumentationLinkBuilder
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinSingleJavaTargetExtension
|
import org.jetbrains.kotlin.gradle.dsl.KotlinSingleJavaTargetExtension
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
import plugins.configureDefaultPublishing
|
import plugins.configureDefaultPublishing
|
||||||
import plugins.configureKotlinPomAttributes
|
import plugins.configureKotlinPomAttributes
|
||||||
|
import java.net.URL
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -44,14 +47,15 @@ import java.util.*
|
|||||||
enum class GradlePluginVariant(
|
enum class GradlePluginVariant(
|
||||||
val sourceSetName: String,
|
val sourceSetName: String,
|
||||||
val minimalSupportedGradleVersion: String,
|
val minimalSupportedGradleVersion: String,
|
||||||
val gradleApiVersion: String
|
val gradleApiVersion: String,
|
||||||
|
val gradleApiJavadocUrl: String
|
||||||
) {
|
) {
|
||||||
GRADLE_MIN("main", "6.7", "6.9"),
|
GRADLE_MIN("main", "6.8.3", "6.9", "https://docs.gradle.org/6.9.3/javadoc/"),
|
||||||
GRADLE_70("gradle70", "7.0", "7.0"),
|
GRADLE_70("gradle70", "7.0", "7.0", "https://docs.gradle.org/7.0.2/javadoc/"),
|
||||||
GRADLE_71("gradle71", "7.1", "7.1"),
|
GRADLE_71("gradle71", "7.1", "7.1", "https://docs.gradle.org/7.1.1/javadoc/"),
|
||||||
GRADLE_74("gradle74", "7.4", "7.4"),
|
GRADLE_74("gradle74", "7.4", "7.4", "https://docs.gradle.org/7.4.2/javadoc/"),
|
||||||
GRADLE_75("gradle75", "7.5", "7.5"),
|
GRADLE_75("gradle75", "7.5", "7.5", "https://docs.gradle.org/7.5.1/javadoc/"),
|
||||||
GRADLE_76("gradle76", "7.6", "7.6"),
|
GRADLE_76("gradle76", "7.6", "7.6", "https://docs.gradle.org/7.6/javadoc/"),
|
||||||
}
|
}
|
||||||
|
|
||||||
val commonSourceSetName = "common"
|
val commonSourceSetName = "common"
|
||||||
@@ -584,7 +588,9 @@ fun Project.addBomCheckTask() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Project.configureDokkaPublication() {
|
fun Project.configureDokkaPublication(
|
||||||
|
shouldLinkGradleApi: Boolean = false
|
||||||
|
) {
|
||||||
if (!kotlinBuildProperties.publishGradlePluginsJavadoc) return
|
if (!kotlinBuildProperties.publishGradlePluginsJavadoc) return
|
||||||
|
|
||||||
plugins.apply("org.jetbrains.dokka")
|
plugins.apply("org.jetbrains.dokka")
|
||||||
@@ -610,11 +616,21 @@ fun Project.configureDokkaPublication() {
|
|||||||
dokkaSourceSets {
|
dokkaSourceSets {
|
||||||
named(commonSourceSet.name) {
|
named(commonSourceSet.name) {
|
||||||
suppress.set(false)
|
suppress.set(false)
|
||||||
|
jdkVersion.set(8)
|
||||||
}
|
}
|
||||||
|
|
||||||
named(variantSourceSet.name) {
|
named(variantSourceSet.name) {
|
||||||
dependsOn(commonSourceSet)
|
dependsOn(commonSourceSet)
|
||||||
suppress.set(false)
|
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")
|
id("org.jetbrains.kotlinx.binary-compatibility-validator")
|
||||||
}
|
}
|
||||||
|
|
||||||
configureDokkaPublication()
|
configureDokkaPublication(
|
||||||
|
shouldLinkGradleApi = true
|
||||||
|
)
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
commonApi(platform(project(":kotlin-gradle-plugins-bom")))
|
commonApi(platform(project(":kotlin-gradle-plugins-bom")))
|
||||||
|
|||||||
Reference in New Issue
Block a user