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

时间:2018-04-03 21:03:34

标签: gradle

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

当我运行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 个答案:

答案 0 :(得分:3)

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

试试吧:

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