代码之家  ›  专栏  ›  技术社区  ›  Rahul Khimasia

定义删除任务时出错

  •  1
  • Rahul Khimasia  · 技术社区  · 7 年前

    下面的dsl脚本块出现错误。

    val DerbyDbDataFolder: File = file("DerbyDbData")
    val DerbyLog: File = file("derby.log")
    
    tasks {
        var cleanDerbyDbData by creating (Delete::class) {
            delete(DerbyDbDataFolder)
            delete(DerbyLog)
        }
    
        "clean" {
            dependsOn(cleanDerbyDbData)
        }
    }
    

    但我得到了下面的错误信息。

           var cleanDerbyDbData by creating (Delete::class) {
                                   ^ Missing 'setValue(Nothing?, KProperty<*>, Delete)' method on delegate of type 'PolymorphicDomainObjectContainer<Delete>'
    

    此错误消息是什么?如何修复?

    1 回复  |  直到 7 年前
        1
  •  1
  •   sa1nt    7 年前

    TLDR

    定义 cleanDerbyDbData 作为一个 val 而不是 var :

    val DerbyDbDataFolder: File = file("DerbyDbData")
    val DerbyLog: File = file("derby.log")
    
    tasks {
        val cleanDerbyDbData by creating (Delete::class) {
            delete(DerbyDbDataFolder)
            delete(DerbyLog)
        }
    
        "clean" {
            dependsOn(cleanDerbyDbData)
        }
    }
    

    细节

    CleanderByDBData 是一个 delegated property var ,右边的表达式 by 必须返回可变值。这个 PolymorphicDomainObjectContainerDelegateProvider creating() 函数不提供任何setter,这就是您看到的错误。