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

时间:2019-05-03 22:29:10

标签: gradle gradlew

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

./gradlew taskA taskB

然后taskB无法看到生成的文件。顺便说一句,IntelliJ已打开,无法同时看到文件。

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

./gradlew taskA
./gradlew taskB

然后taskB可以看到文件正常。您知道我如何将命令链接在一起,从而分别运行它们吗?我已经尝试在clean的开头使用taskB,但这无济于事。

2 个答案:

答案 0 :(得分:0)

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

cd .

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

答案 1 :(得分:0)

在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)