Explicitly enable Dokka javadocs generation

Actually we don't need javadoc generation for our internal stuff like
':kotlin-gradle-plugin'. But ':kotlin-gradle-plugin-api' is a public api
 and should have properly generated javadocs.

^KT-55520 In Progress
This commit is contained in:
Yahor Berdnikau
2023-01-12 10:47:14 +01:00
committed by Space Team
parent 18e9496ea4
commit 4de60879f0
6 changed files with 47 additions and 181 deletions
+45 -53
View File
@@ -54,6 +54,8 @@ enum class GradlePluginVariant(
GRADLE_76("gradle76", "7.6", "7.6"),
}
val commonSourceSetName = "common"
/**
* Configures common pom configuration parameters
*/
@@ -103,7 +105,7 @@ fun Project.excludeGradleCommonDependencies(sourceSet: SourceSet) {
* Should contain classes that are independent of Gradle API version or using minimal supported Gradle api.
*/
fun Project.createGradleCommonSourceSet(): SourceSet {
val commonSourceSet = sourceSets.create("common") {
val commonSourceSet = sourceSets.create(commonSourceSetName) {
excludeGradleCommonDependencies(this)
// Adding Gradle API to separate configuration, so version will not leak into variants
@@ -299,28 +301,6 @@ fun Project.reconfigureMainSourcesSetForGradlePlugin(
}
}
if (kotlinBuildProperties.publishGradlePluginsJavadoc) {
plugins.withId("org.jetbrains.dokka") {
val dokkaTask = tasks.named<DokkaTask>("dokkaJavadoc") {
dokkaSourceSets {
named(commonSourceSet.name) {
suppress.set(false)
}
named("main") {
dependsOn(commonSourceSet)
}
}
}
tasks.withType<Jar>().configureEach {
if (name == javadocJarTaskName) {
from(dokkaTask.flatMap { it.outputDirectory })
}
}
}
}
// Workaround for https://youtrack.jetbrains.com/issue/KT-52987
val javaComponent = project.components["java"] as AdhocComponentWithVariants
listOf(
@@ -446,36 +426,6 @@ fun Project.createGradlePluginVariant(
}
}
if (kotlinBuildProperties.publishGradlePluginsJavadoc) {
plugins.withId("org.jetbrains.dokka") {
val dokkaTask = tasks.register<DokkaTask>(
"dokka${
variantSourceSet.javadocTaskName.replaceFirstChar { it.uppercase() }
}") {
description = "Generates documentation in 'javadoc' format for '${variantSourceSet.javadocTaskName}' variant"
plugins.dependencies.add(
project.dependencies.create("org.jetbrains.dokka:javadoc-plugin:${DokkaVersion.version}")
)
dokkaSourceSets {
named(commonSourceSet.name) {
suppress.set(false)
}
named(variantSourceSet.name) {
dependsOn(commonSourceSet)
suppress.set(false)
}
}
}
tasks.named<Jar>(variantSourceSet.javadocJarTaskName) {
from(dokkaTask.flatMap { it.outputDirectory })
}
}
}
plugins.withId("java-gradle-plugin") {
tasks.named<Copy>(variantSourceSet.processResourcesTaskName) {
val copyPluginDescriptors = rootSpec.addChild()
@@ -632,4 +582,46 @@ fun Project.addBomCheckTask() {
tasks.named("check") {
dependsOn(checkBomTask)
}
}
fun Project.configureDokkaPublication() {
if (!kotlinBuildProperties.publishGradlePluginsJavadoc) return
plugins.apply("org.jetbrains.dokka")
plugins.withId("org.jetbrains.dokka") {
val commonSourceSet = sourceSets.getByName(commonSourceSetName)
GradlePluginVariant.values().forEach { pluginVariant ->
val variantSourceSet = sourceSets.getByName(pluginVariant.sourceSetName)
val dokkaTaskName = "dokka${variantSourceSet.javadocTaskName.replaceFirstChar { it.uppercase() }}"
val dokkaTask = if (tasks.names.contains(dokkaTaskName)) {
tasks.named<DokkaTask>(dokkaTaskName)
} else {
tasks.register<DokkaTask>(dokkaTaskName)
}
dokkaTask.configure {
description = "Generates documentation in 'javadoc' format for '${variantSourceSet.javadocTaskName}' variant"
plugins.dependencies.add(
project.dependencies.create("org.jetbrains.dokka:javadoc-plugin:${DokkaVersion.version}")
)
dokkaSourceSets {
named(commonSourceSet.name) {
suppress.set(false)
}
named(variantSourceSet.name) {
dependsOn(commonSourceSet)
suppress.set(false)
}
}
}
tasks.named<Jar>(variantSourceSet.javadocJarTaskName) {
from(dokkaTask.flatMap { it.outputDirectory })
}
}
}
}
@@ -8,7 +8,6 @@ import plugins.signLibraryPublication
plugins {
kotlin("jvm")
`java-gradle-plugin`
id("org.jetbrains.dokka")
`maven-publish`
id("com.gradle.plugin-publish")
}
@@ -9,7 +9,6 @@ import plugins.signLibraryPublication
plugins {
`java-library`
kotlin("jvm")
id("org.jetbrains.dokka")
`maven-publish`
}