链式 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).
我有 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).