Search code examples
kotlingradlebuild.gradlegradle-kotlin-dsl

Get a property of task? in Gradle kotlin


I'm trying to convert my build.gradle file to build.gradle.kts. I almost do that but only one problem left. I don't have any idea how to convert code below.

Kotlin

import org.asciidoctor.gradle.AsciidoctorTask

...

apply(plugin = "org.asciidoctor.convert")

val snippetsDir = file("build/generated-snippets")

tasks.named<AsciidoctorTask>("asciidoctor") {
    attributes(
        mapOf(
            "snippets" to snippetsDir
        )
    )
    inputs.dir(snippetsDir)
    dependsOn("test")
}

tasks.withType<BootJar> {
    dependsOn("asciidoctor")

    // This is the problem!
    //  from("${asciidoctor.outputDir}/html5") {
    //      into("static/docs")
    //  }
}

Please help me! Thanks :)


Solution

  • See Tasks documentation : you can access asciidoctor tasks using Kotlin delegated properties, and then access its properties like outputDir

    tasks.withType<org.springframework.boot.gradle.tasks.bundling.BootJar> {
        dependsOn("asciidoctor")
    
        // This was the problem!
        val asciidoctor by tasks.getting(AsciidoctorTask::class)
        from("${asciidoctor.outputDir}/html5") {
              into("static/docs")
        }
    }