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"),
|
GRADLE_76("gradle76", "7.6", "7.6"),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val commonSourceSetName = "common"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configures common pom configuration parameters
|
* 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.
|
* Should contain classes that are independent of Gradle API version or using minimal supported Gradle api.
|
||||||
*/
|
*/
|
||||||
fun Project.createGradleCommonSourceSet(): SourceSet {
|
fun Project.createGradleCommonSourceSet(): SourceSet {
|
||||||
val commonSourceSet = sourceSets.create("common") {
|
val commonSourceSet = sourceSets.create(commonSourceSetName) {
|
||||||
excludeGradleCommonDependencies(this)
|
excludeGradleCommonDependencies(this)
|
||||||
|
|
||||||
// Adding Gradle API to separate configuration, so version will not leak into variants
|
// 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
|
// Workaround for https://youtrack.jetbrains.com/issue/KT-52987
|
||||||
val javaComponent = project.components["java"] as AdhocComponentWithVariants
|
val javaComponent = project.components["java"] as AdhocComponentWithVariants
|
||||||
listOf(
|
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") {
|
plugins.withId("java-gradle-plugin") {
|
||||||
tasks.named<Copy>(variantSourceSet.processResourcesTaskName) {
|
tasks.named<Copy>(variantSourceSet.processResourcesTaskName) {
|
||||||
val copyPluginDescriptors = rootSpec.addChild()
|
val copyPluginDescriptors = rootSpec.addChild()
|
||||||
@@ -632,4 +582,46 @@ fun Project.addBomCheckTask() {
|
|||||||
tasks.named("check") {
|
tasks.named("check") {
|
||||||
dependsOn(checkBomTask)
|
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 {
|
plugins {
|
||||||
kotlin("jvm")
|
kotlin("jvm")
|
||||||
`java-gradle-plugin`
|
`java-gradle-plugin`
|
||||||
id("org.jetbrains.dokka")
|
|
||||||
`maven-publish`
|
`maven-publish`
|
||||||
id("com.gradle.plugin-publish")
|
id("com.gradle.plugin-publish")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import plugins.signLibraryPublication
|
|||||||
plugins {
|
plugins {
|
||||||
`java-library`
|
`java-library`
|
||||||
kotlin("jvm")
|
kotlin("jvm")
|
||||||
id("org.jetbrains.dokka")
|
|
||||||
`maven-publish`
|
`maven-publish`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ plugins {
|
|||||||
id("org.jetbrains.kotlinx.binary-compatibility-validator")
|
id("org.jetbrains.kotlinx.binary-compatibility-validator")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
configureDokkaPublication()
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
commonApi(platform(project(":kotlin-gradle-plugins-bom")))
|
commonApi(platform(project(":kotlin-gradle-plugins-bom")))
|
||||||
commonApi(project(":kotlin-gradle-plugin-annotations"))
|
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)
|
enableStricterValidation.set(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
withType<DokkaTask>().configureEach {
|
|
||||||
dokkaSourceSets.configureEach {
|
|
||||||
includes.from("Module.md")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
register("dokka") {
|
|
||||||
dependsOn(named("dokkaJavadoc"))
|
|
||||||
}
|
|
||||||
|
|
||||||
withType<ShadowJar>().configureEach {
|
withType<ShadowJar>().configureEach {
|
||||||
relocate("com.github.gundy", "$kotlinEmbeddableRootPackage.com.github.gundy")
|
relocate("com.github.gundy", "$kotlinEmbeddableRootPackage.com.github.gundy")
|
||||||
relocate("de.undercouch.gradle.tasks.download", "$kotlinEmbeddableRootPackage.de.undercouch.gradle.tasks.download")
|
relocate("de.undercouch.gradle.tasks.download", "$kotlinEmbeddableRootPackage.de.undercouch.gradle.tasks.download")
|
||||||
|
|||||||
Reference in New Issue
Block a user