链式 Gradle 任务无法读取上一个任务生成的文件

Chained Gradle task cannot read file generated by previous task

我有 gradle 任务 taskA,当 运行 时将生成一个 html 文件。然后 taskB 将尝试打开该文件。当我像这样链接这些时:

./gradlew taskA taskB

然后taskB看不到生成的文件。顺带一提IntelliJ是打开的,并没有同时看到文件。

但是如果我 运行 分开命令,例如

./gradlew taskA
./gradlew taskB

然后taskB就可以正常看到文件了。您知道我如何将命令与 运行 分别链接起来吗?我试过在 taskB 的开头使用 clean 但它没有帮助。

我让它工作的方法是 cd 回到当前目录。 当您在正确的目录中时,可以使用以下命令实现此目的:

cd .

这会强制 gradle 立即选取任何新文件。

在 Gradle 中链接任务的方式是使 taskA 依赖于 taskB

您可以按照以下方式进行:

apply plugin: 'base'    

def file = project.file('shared-file.txt')

task taskA {
    outputs.file(file)
    doLast {
        // Create the file
        file.text = "Hello world!"
    }
}

task taskB(dependsOn: taskA) {
    inputs.file(file)
    doLast {
        // Print file content
        println file.text
    }
}

要清理文件,您可以 运行 cleanTaskA,这将清理 taskA 定义的所有输出。或者,如果您想将清理添加到通用 clean 任务,则添加 clean.dependsOn(cleanTaskA, cleanTaskB).