Gradle 可选 @Input

标签 gradle build.gradle gradle-plugin gradle-task

如何为任务提供可选属性?

class CustomTask extends DefaultTask {

    @Input
    Closure preconfig

    // ...    
}

这种方式要求用户提供 preconfig使用 CustomTask 定义任务时将闭包作为参数类型。

除了定义设置属性的方法之外,如何实现声明式方式?
class CustomTask extends DefaultTask {

    @Input
    Closure preconfig

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

    // ...   
}

最佳答案

实际上,我找到了将默认值分配给 @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

    // ...    
}

关于Gradle 可选 @Input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41566160/

相关文章:

更新 Android Studio 后 Android 构建命令失败

java - 仅设置如果依赖于Gradle插件任务

java - Firebase 依赖项导致 Gradle 构建错误 - 程序类型已存在

android - 任务 ':app:processArm64DebugResources'的执行失败。 >无法执行Aapt

gradle - 当我的所有测试都在单独的子模块中时,如何使用 gradle 插件获取 Jacoco 覆盖率报告

java - 在使用我的Gradle插件的Gradle项目上添加第二个源文件夹

android - 使用gradle命令行编译时不生成BuildConfig

android - Buck 是否有类似 Gradle 的构建变体和产品风格的东西?

java - 将Spring Boot jar名称传递给Gradle Groovy脚本

Android Gradle Sync 同步项目失败