【问题标题】:How do I overwrite a task in gradle kotlin-dsl如何覆盖 gradle kotlin-dsl 中的任务
【发布时间】:2018-07-11 04:54:16
【问题描述】:

在 Groovy 中,我像这样覆盖一个任务:

task jar(overwrite: true) {
    ...
}

如何使用 Kotlin-dsl 做到这一点?我知道我可以创建这样的任务:

tasks {
     val jar by creating {
          ...
     }
}

但我找不到将其声明为覆盖的等效方法,这会导致错误

【问题讨论】:

    标签: gradle task build.gradle gradle-kotlin-dsl


    【解决方案1】:

    通过打开an issue on the kotlin-dsl github,我找到了正确的语法:

    tasks.replace("jar") {
        ...
    }
    

    但是,这是旧方法,在tasks { } 块内不起作用,因此将进一步跟踪此问题here

    【讨论】:

    • 问题链接到已合并的github.com/gradle/kotlin-dsl-samples/pull/1000,所以它应该可以工作,但我还没有尝试过。
    • 从 Gradle 7.3.3 开始,这似乎不起作用。我收到此错误:Type mismatch: inferred type is () -> Unit but Class<TypeVariable(T)> was expected 带有指向开放花括号的箭头。如果我将其更改为tasks.replace("build").doLast { ... },该特定错误就会消失,但随后我会收到另一个错误:Cannot call Task.dependsOn(Object...) on task ':build' after task has started execution.
    猜你喜欢
    • 1970-01-01
    • 2019-06-26
    • 2022-09-28
    • 2018-07-08
    • 2019-06-19
    • 2022-12-09
    • 2020-11-21
    • 2021-03-18
    • 2019-09-15
    相关资源
    最近更新 更多