首页 文章

如何在没有@Optional注释的Gradle任务中指定可选输入?

提问于
浏览
2

我想使用可选输入(如果存在),如果它不存在则继续 .

当我运行 gradle -Dorg.gradle.warning.mode=all 时,我收到了一个弃用警告,仅指定输入:

在任务':addWorkingCopyInfo'的配置中发现了一个问题 . 通过TaskInputs和TaskOutputs方法注册无效输入和输出已被弃用,并计划在Gradle 5.0中删除 . - 为属性'$ 1'指定的文件'/ Users / robert / test / special-build-tag'不存在 .

这是构建脚本中的任务:

task addWorkingCopyInfo(type: Exec) {
    inputs.file file("tagFile")   // deprecated if the file does not exist
    outputs.file file("generated/taginfo")
    executable "perl" args "..."
}

我已经看到如果我有一个自定义任务类,我可以添加 @Optional 注释,但事实并非如此 .

我最好的解决方案是为文件添加一个检查,如果存在则只将其作为输入 . 这似乎有效 .

task addWorkingCopyInfo(type: Exec) {
    def tagFile = new File("tagFile");
    if (tagFile.exists()) {
        inputs.file tagFile
    }
    outputs.file file("generated/taginfo")
    executable "perl" args "..."
}

是否有更好/更多的Gradle-ish方法来做到这一点?

1 回答

  • 3

    方法 inputs.files(...) 返回TaskInputFilePropertyBuilder,它提供方法 optional()optional(boolean) .

    试一试:

    inputs.files('my-file').optional()
    

相关问题