将gradle任务的输入声明为多个文件

时间:2016-06-08 20:44:10

标签: android gradle

我们有一个gradle任务,可以在构建之前为我们自动生成代码。请参阅以下示例,

task djinniTask(type: org.gradle.api.tasks.Exec) {
    commandLine 'sh', './Djinni/run_djinni.sh'
}

assembleDebug.dependsOn djinniTask

基本上,上面的 run_djinni.sh 正在使用库djinni来生成JNI代码。以上工作正常,只是每次我们构建时都会运行这个脚本,即使我们没有更新脚本文件,这显然不是很有效。我们进行了一些研究,发现17.9. Skipping tasks that are up-to-date。结果,以下工作正常。如果我们没有修改 run_djinni.sh ,它将跳过此任务。

task transform {
    ext.srcFile = file('./Djinni/run_djinni.sh')
    ext.destDir = new File(buildDir, 'generated')
    doLast {
        commandLine 'sh', './Djinni/run_djinni.sh'
    }
}

现在的问题是, run_djinni.sh 不是我们唯一的脚本文件。项目很大,我们有多个脚本文件,如: run_foo_djinni.sh run_bar_djinni.sh 等等。 run_djinni.sh 会调用每个文件其他脚本。那么有没有办法将gradle任务的输入声明为多个文件,例如,在我们的例子中, Djinni 文件夹下的每个文件?

1 个答案:

答案 0 :(得分:2)

好的,根据 gradle DSL,您可以定义多个输入:

task transform {
   inputs.files('file path', 'another file path')
}