diff options
author | sebastian.sellmair <sebastian.sellmair@jetbrains.com> | 2020-07-17 11:49:41 +0200 |
---|---|---|
committer | Sebastian Sellmair <34319766+sellmair@users.noreply.github.com> | 2020-07-17 17:25:37 +0200 |
commit | 3f26229f65f3bfd62fbdb49bb1b557c1ec9fbab4 (patch) | |
tree | fff7b8e0056104ba787ee7b8455d24540f931d6e /runners/gradle-plugin/src/main/kotlin | |
parent | b1e72af62ef00be1b1bb670d1afcc352c8a5ce1b (diff) | |
download | dokka-3f26229f65f3bfd62fbdb49bb1b557c1ec9fbab4.tar.gz dokka-3f26229f65f3bfd62fbdb49bb1b557c1ec9fbab4.tar.bz2 dokka-3f26229f65f3bfd62fbdb49bb1b557c1ec9fbab4.zip |
Fix DokkaCollectorTask and disable DokkaCollectorTask and DokkaMultimoduleTask for javadoc
Diffstat (limited to 'runners/gradle-plugin/src/main/kotlin')
-rw-r--r-- | runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaCollectorTask.kt | 37 | ||||
-rw-r--r-- | runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/main.kt | 34 |
2 files changed, 44 insertions, 27 deletions
diff --git a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaCollectorTask.kt b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaCollectorTask.kt index 37952ea8..6a07d9c1 100644 --- a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaCollectorTask.kt +++ b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaCollectorTask.kt @@ -5,6 +5,7 @@ import org.gradle.api.plugins.JavaBasePlugin import org.gradle.api.plugins.JavaBasePlugin.DOCUMENTATION_GROUP import org.gradle.api.tasks.Input import org.gradle.api.tasks.TaskAction +import org.gradle.api.tasks.TaskDependency import java.lang.IllegalStateException open class DokkaCollectorTask : DefaultTask() { @@ -15,44 +16,48 @@ open class DokkaCollectorTask : DefaultTask() { @Input var outputDirectory: String = defaultDokkaOutputDirectory().absolutePath - private lateinit var configuration: GradleDokkaConfigurationImpl - @Input var dokkaTaskNames: Set<String> = setOf() + override fun getFinalizedBy(): TaskDependency { + val dokkaTasks = getSubprojectDokkaTasks(dokkaTaskNames) + dokkaTasks.forEach { dokkaTask -> finalizedBy(dokkaTask) } + dokkaTasks.zipWithNext().forEach { (first, second) -> first.mustRunAfter(second) } + return super.getFinalizedBy() + } + @TaskAction fun collect() { - val configurations = project.subprojects - .filter { subProject -> subProject.name in modules } - .flatMap { subProject -> dokkaTaskNames.mapNotNull(subProject.tasks::findByName) } - .filterIsInstance<DokkaTask>() + val configurations = getSubprojectDokkaTasks(dokkaTaskNames) .mapNotNull { dokkaTask -> dokkaTask.getConfigurationOrNull() } - val initial = GradleDokkaConfigurationImpl().apply { outputDir = outputDirectory cacheRoot = configurations.first().cacheRoot } // TODO this certainly not the ideal solution - configuration = configurations.fold(initial) { acc, it: GradleDokkaConfigurationImpl -> + val configuration = configurations.fold(initial) { acc, it: GradleDokkaConfigurationImpl -> if (acc.cacheRoot != it.cacheRoot) throw IllegalStateException("Dokka task configurations differ on core argument cacheRoot") acc.sourceSets = acc.sourceSets + it.sourceSets acc.pluginsClasspath = (acc.pluginsClasspath + it.pluginsClasspath).distinct() acc } - project.tasks.withType(DokkaTask::class.java).configureEach { it.enforcedConfiguration = configuration } + getSubprojectDokkaTasks(dokkaTaskNames).forEach { it.enforcedConfiguration = configuration } } - init { - // TODO: This this certainly not the ideal solution - dokkaTaskNames.forEach { dokkaTaskName -> - finalizedBy(dokkaTaskName) - } - - group = DOCUMENTATION_GROUP + private fun getSubprojectDokkaTasks(dokkaTaskName: String): List<DokkaTask> { + return project.subprojects + .filter { subproject -> subproject.name in modules } + .mapNotNull { subproject -> subproject.tasks.findByName(dokkaTaskName) as? DokkaTask } } + private fun getSubprojectDokkaTasks(dokkaTaskNames: Set<String>): List<DokkaTask> { + return dokkaTaskNames.flatMap { dokkaTaskName -> getSubprojectDokkaTasks(dokkaTaskName) } + } + init { + group = DOCUMENTATION_GROUP + } } diff --git a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/main.kt b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/main.kt index d70448f1..e6ed363a 100644 --- a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/main.kt +++ b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/main.kt @@ -9,7 +9,11 @@ open class DokkaPlugin : Plugin<Project> { project.setupDokkaTasks("dokkaHtml") - project.setupDokkaTasks("dokkaJavadoc") { + project.setupDokkaTasks( + name = "dokkaJavadoc", + multimoduleTaskSupported = false, + collectorTaskSupported = false + ) { plugins.dependencies.add(project.dokkaArtifacts.javadocPlugin) } @@ -26,7 +30,12 @@ open class DokkaPlugin : Plugin<Project> { * Creates [DokkaTask], [DokkaMultimoduleTask] and [DokkaCollectorTask] for the given * name and configuration. */ - private fun Project.setupDokkaTasks(name: String, configuration: AbstractDokkaTask.() -> Unit = {}) { + private fun Project.setupDokkaTasks( + name: String, + multimoduleTaskSupported: Boolean = true, + collectorTaskSupported: Boolean = true, + configuration: AbstractDokkaTask.() -> Unit = {} + ) { project.maybeCreateDokkaPluginConfiguration(name) project.maybeCreateDokkaRuntimeConfiguration(name) project.tasks.register<DokkaTask>(name) { @@ -34,16 +43,19 @@ open class DokkaPlugin : Plugin<Project> { } if (project.subprojects.isNotEmpty()) { - val multimoduleName = "${name}Multimodule" - project.maybeCreateDokkaPluginConfiguration(multimoduleName) - project.maybeCreateDokkaRuntimeConfiguration(multimoduleName) - project.tasks.register<DokkaMultimoduleTask>(multimoduleName) { - dokkaTaskNames = dokkaTaskNames + name - configuration() + if (multimoduleTaskSupported) { + val multimoduleName = "${name}Multimodule" + project.maybeCreateDokkaPluginConfiguration(multimoduleName) + project.maybeCreateDokkaRuntimeConfiguration(multimoduleName) + project.tasks.register<DokkaMultimoduleTask>(multimoduleName) { + dokkaTaskNames = dokkaTaskNames + name + configuration() + } } - - project.tasks.register<DokkaCollectorTask>("${name}Collector") { - dokkaTaskNames = dokkaTaskNames + name + if (collectorTaskSupported) { + project.tasks.register<DokkaCollectorTask>("${name}Collector") { + dokkaTaskNames = dokkaTaskNames + name + } } } } |