插件如何提供扩展任务?

时间:2019-05-31 08:32:45

标签: gradle kotlin gradle-kotlin-dsl kotlin-js

我有kotlin2js个插件,任务为compileKotlin2Js。我是这样配置的:

val compileKotlin2Js: Kotlin2JsCompile by tasks
compileKotlin2Js.kotlinOptions {
    main = "call"
    outputFile = "${projectDir}/build/app.js"
}

现在,我想创建类似的任务,但要创建其他kotlinOptions。例如:

.kotlinOptions {
    main = "noCall"
    outputFile = "${projectDir}/build/lib.js"
}

如何做到?

更新:我也试图做这样的事情:

tasks.register<Kotlin2JsCompile>("myCompile2Js") {
    kotlinOptions {
        main = "noCall"
        outputFile = "${projectDir}/build/lib.js"
    }
}

但是会产生错误:

Execution failed for task ':myCompile2Js'.
> lateinit property destinationDirProvider has not been initialized

我还尝试指定destinationDir。错误消失了,但是这样的任务不会产生任何构建。

1 个答案:

答案 0 :(得分:0)

我还没有测试过,但是我相信类似以下的方法可以解决问题:

tasks.register<Kotlin2JsCompile>("myCompile2Js") {
    kotlinOptions {
        main = "noCall"
        outputFile = "${projectDir}/build/lib.js"
    }
}

或者,如果您稍后需要参考该任务:

val myCompile2Js by tasks.creating(Kotlin2JsCompile::class)
myCompile2Js.kotlinOptions {
    main = "noCall"
    outputFile = "${projectDir}/build/lib.js"
}