【问题标题】:How extend task provided by plugin?如何扩展插件提供的任务?
【发布时间】:2019-10-16 21:20:39
【问题描述】:

我有带有任务compileKotlin2Jskotlin2js 插件。我是这样配置的:

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。错误消失,但这样的任务不会产生任何构建。

【问题讨论】:

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


    【解决方案1】:

    我还没有测试过,但我相信类似下面的东西应该可以解决问题:

    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"
    }
    

    【讨论】:

    • 我也试过了。但它不起作用。产生错误Execution failed for task ':myCompile2Js'. &gt; lateinit property destinationDirProvider has not been initialized。而且我还尝试指定destinationDir。它避免了错误,但任务什么也不做。
    • @leaf 我看到了。也许你可以看看他们是如何在插件中创建任务的,也许在创建自定义任务时需要更多的初始化。不幸的是,我自己并不了解 kotlin JS 插件的详细信息。
    猜你喜欢
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多