diff options
author | ingo <ingo.kegel@ej-technologies.com> | 2016-01-03 14:17:27 +0100 |
---|---|---|
committer | ingo <ingo.kegel@ej-technologies.com> | 2016-01-03 14:17:27 +0100 |
commit | 6b0263f65a320116c0b84349a02221f780b8a0d8 (patch) | |
tree | 209ae4a2d3c0c8fd26d824f13b35f3947464d3e2 /dokka-gradle-plugin/src/main/kotlin | |
parent | da9138c9017d49a2cda858af62e8c4880abd9166 (diff) | |
download | dokka-6b0263f65a320116c0b84349a02221f780b8a0d8.tar.gz dokka-6b0263f65a320116c0b84349a02221f780b8a0d8.tar.bz2 dokka-6b0263f65a320116c0b84349a02221f780b8a0d8.zip |
Allow multiple dokka tasks for one project.
For example, if multiple formats should be generated, adding more tasks like
task dokkaJavadoc(type: org.jetbrains.dokka.gradle.DokkaTask) {
outputFormat = 'javadoc'
outputDirectory = "$buildDir/javadoc"
}
is now possible.
Diffstat (limited to 'dokka-gradle-plugin/src/main/kotlin')
-rw-r--r-- | dokka-gradle-plugin/src/main/kotlin/main.kt | 72 |
1 files changed, 34 insertions, 38 deletions
diff --git a/dokka-gradle-plugin/src/main/kotlin/main.kt b/dokka-gradle-plugin/src/main/kotlin/main.kt index e56b2371..a107260e 100644 --- a/dokka-gradle-plugin/src/main/kotlin/main.kt +++ b/dokka-gradle-plugin/src/main/kotlin/main.kt @@ -15,11 +15,10 @@ import java.util.ArrayList public open class DokkaPlugin : Plugin<Project> { override fun apply(project: Project) { - val ext = project.extensions.create("dokka", DokkaExtension::class.java) - project.tasks.create("dokka", DokkaTask::class.java) - - ext.moduleName = project.name - ext.outputDirectory = File(project.buildDir, "dokka").absolutePath + project.tasks.create("dokka", DokkaTask::class.java).apply { + moduleName = project.name + outputDirectory = File(project.buildDir, "dokka").absolutePath + } } } @@ -29,10 +28,32 @@ public open class DokkaTask : DefaultTask() { description = "Generates dokka documentation for Kotlin" } + var moduleName: String = "" + var outputFormat: String = "html" + var outputDirectory: String = "" + var processConfigurations: ArrayList<String> = arrayListOf("compile") + var includes: ArrayList<String> = arrayListOf() + var linkMappings: ArrayList<LinkMapping> = arrayListOf() + var samples: ArrayList<String> = arrayListOf() + + fun linkMapping(closure: Closure<Any?>) { + val mapping = LinkMapping() + closure.delegate = mapping + closure.call() + + if (mapping.dir.isEmpty()) { + throw IllegalArgumentException("Link mapping should have dir") + } + if (mapping.url.isEmpty()) { + throw IllegalArgumentException("Link mapping should have url") + } + + linkMappings.add(mapping) + } + @TaskAction fun generate() { val project = project - val conf = project.extensions.getByType(DokkaExtension::class.java) val javaPluginConvention = project.convention.getPlugin(JavaPluginConvention::class.java) val sourceSets = javaPluginConvention.sourceSets?.findByName(SourceSet.MAIN_SOURCE_SET_NAME) @@ -40,7 +61,7 @@ public open class DokkaTask : DefaultTask() { val allConfigurations = project.configurations val classpath = - conf.processConfigurations + processConfigurations .map { allConfigurations?.getByName(it) ?: throw IllegalArgumentException("No configuration $it found") } .flatMap { it } @@ -53,43 +74,18 @@ public open class DokkaTask : DefaultTask() { DokkaGradleLogger(logger), classpath.map { it.absolutePath }, sourceDirectories.map { it.absolutePath }, - conf.samples, - conf.includes, - conf.moduleName, - conf.outputDirectory, - conf.outputFormat, - conf.linkMappings.map { SourceLinkDefinition(project.file(it.dir).absolutePath, it.url, it.suffix) }, + samples, + includes, + moduleName, + outputDirectory, + outputFormat, + linkMappings.map { SourceLinkDefinition(project.file(it.dir).absolutePath, it.url, it.suffix) }, false ).generate() } } -public open class DokkaExtension { - var moduleName: String = "" - var outputFormat: String = "html" - var outputDirectory: String = "" - var processConfigurations: ArrayList<String> = arrayListOf("compile") - var includes: ArrayList<String> = arrayListOf() - var linkMappings: ArrayList<LinkMapping> = arrayListOf() - var samples: ArrayList<String> = arrayListOf() - - fun linkMapping(closure: Closure<Any?>) { - val mapping = LinkMapping() - closure.delegate = mapping - closure.call() - - if (mapping.dir.isEmpty()) { - throw IllegalArgumentException("Link mapping should have dir") - } - if (mapping.url.isEmpty()) { - throw IllegalArgumentException("Link mapping should have url") - } - - linkMappings.add(mapping) - } -} - public open class LinkMapping { var dir: String = "" var url: String = "" |