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:
committed by
Space Team
parent
18e9496ea4
commit
4de60879f0
@@ -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`
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@ plugins {
|
||||
id("org.jetbrains.kotlinx.binary-compatibility-validator")
|
||||
}
|
||||
|
||||
configureDokkaPublication()
|
||||
|
||||
dependencies {
|
||||
commonApi(platform(project(":kotlin-gradle-plugins-bom")))
|
||||
commonApi(project(":kotlin-gradle-plugin-annotations"))
|
||||
|
||||
@@ -1,117 +0,0 @@
|
||||
# Module kotlin-gradle-plugin
|
||||
|
||||
`kotlin-gradle-plugin` artifact provides multiple plugins.
|
||||
|
||||
### kotlin
|
||||
|
||||
How to apply:
|
||||
|
||||
```
|
||||
apply plugin: 'kotlin'
|
||||
```
|
||||
|
||||
Tasks:
|
||||
|
||||
| Name | Type | Description
|
||||
|------------------------------|--------------------|---------------|
|
||||
| compileKotlin | [KotlinJvmCompile] | A task is created for `main` source set |
|
||||
| compileTestKotlin | [KotlinJvmCompile] | A task is created for `test` source set |
|
||||
| compile*SourceSetName*Kotlin | [KotlinJvmCompile] | A task is created for each additional source set |
|
||||
|
||||
Each [KotlinJvmCompile] task provides `kotlinOptions` ([KotlinJvmOptions]) extension:
|
||||
|
||||
```
|
||||
compileKotlin {
|
||||
kotlinOptions {
|
||||
noStdlib = true
|
||||
}
|
||||
// kotlinOptions.noStdlib = true
|
||||
}
|
||||
```
|
||||
|
||||
### kotlin-android
|
||||
|
||||
A plugin that should be used for Android development.
|
||||
|
||||
How to apply:
|
||||
|
||||
```
|
||||
apply plugin: 'kotlin-android'
|
||||
```
|
||||
|
||||
Tasks:
|
||||
|
||||
| Name | Type | Description
|
||||
|------------------------------|--------------------|---------------|
|
||||
| compile*VariantName*Kotlin | [KotlinJvmCompile] | A task is created for each variant |
|
||||
|
||||
Note that tasks are created after evaluation, so all references to tasks should be done in `afterEvaluate` section:
|
||||
|
||||
```
|
||||
afterEvaluate {
|
||||
compileDebugKotlin {
|
||||
kotlinOptions {
|
||||
noStdlib = true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Android plugin also adds `kotlinOptions` extension to `android` section to set options for all kotlin tasks:
|
||||
|
||||
```
|
||||
android {
|
||||
kotlinOptions {
|
||||
noStdlib = true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Task's `kotlinOptions` "override" ones in `android` section:
|
||||
|
||||
```
|
||||
android {
|
||||
kotlinOptions {
|
||||
noStdlib = true
|
||||
}
|
||||
}
|
||||
|
||||
afterEvaluate {
|
||||
compileDebugKotlin {
|
||||
kotlinOptions {
|
||||
noStdlib = false
|
||||
}
|
||||
}
|
||||
}
|
||||
// compileProductionKotlin.noStdlib == true
|
||||
// compileDebugKotlin.noStdlib == false
|
||||
```
|
||||
|
||||
### Kotlin/JS
|
||||
|
||||
How to apply:
|
||||
|
||||
```
|
||||
plugins {
|
||||
id 'org.jetbrains.kotlin.js'
|
||||
}
|
||||
```
|
||||
|
||||
Tasks:
|
||||
|
||||
| Name | Type | Description
|
||||
|--------------------------------|--------------------|---------------|
|
||||
| compileKotlin2Js | [KotlinJsCompile] | A task is created for `main` source set |
|
||||
| compileTestKotlin2Js | [KotlinJsCompile] | A task is created for `test` source set |
|
||||
| compile*SourceSetName*Kotlin2Js| [KotlinJsCompile] | A task is created for each additional source set |
|
||||
|
||||
Each [KotlinJsCompile] task provides `kotlinOptions` ([KotlinJsOptions]) extension:
|
||||
|
||||
```
|
||||
compileKotlinJs {
|
||||
kotlinOptions {
|
||||
noStdlib = true
|
||||
}
|
||||
// kotlinOptions.noStdlib = true
|
||||
}
|
||||
```
|
||||
@@ -125,15 +125,6 @@ tasks {
|
||||
enableStricterValidation.set(true)
|
||||
}
|
||||
|
||||
withType<DokkaTask>().configureEach {
|
||||
dokkaSourceSets.configureEach {
|
||||
includes.from("Module.md")
|
||||
}
|
||||
}
|
||||
register("dokka") {
|
||||
dependsOn(named("dokkaJavadoc"))
|
||||
}
|
||||
|
||||
withType<ShadowJar>().configureEach {
|
||||
relocate("com.github.gundy", "$kotlinEmbeddableRootPackage.com.github.gundy")
|
||||
relocate("de.undercouch.gradle.tasks.download", "$kotlinEmbeddableRootPackage.de.undercouch.gradle.tasks.download")
|
||||
|
||||
Reference in New Issue
Block a user