2017-01-10 4 views
2

Как я могу предоставить необязательное свойство для задачи?Gradle optional @Input

class CustomTask extends DefaultTask { 

    @Input 
    Closure preconfig 

    // ...  
} 

Таким образом обязует пользователю обеспечить preconfig замыкание в качестве параметра при определении задачи с CustomTask типа.

Как я могу достичь декларативного способа, кроме определения методов для задания свойств?

class CustomTask extends DefaultTask { 

    @Input 
    Closure preconfig 

    def preconfig(Closure c){ 
     this.preconfig = c 
    } 

    // ... 
} 

ответ

0

На самом деле, я нашел решение в присвоении значения по умолчанию к @Input полей.

Пример:

class CustomTask extends DefaultTask { 

    @Input 
    Closure preconfig = null // or { } <- empty closure 

    // ...  
} 

А затем проверить, если переменная @Input не равно нулю:

// ... 

@TaskAction 
def action(){ 
    if (preconfig) { preconfig() } 
} 

// ... 

Также полезно аннотацию @Optional:

class CustomTask extends DefaultTask { 

    @Input @Optional 
    Closure preconfig 

    // ...  
} 
1
class CustomTask extends DefaultTask { 
    void setPreconfig(Closure c) { 
     inputs.property("preconfig", c) 
    } 
    ... 
} 

@see TaskInputs

+0

Ну, таким образом я также должны объявить отдельный метод –