Gradle 脚本 - 等待操作在 file.delete() 之前完成
Gradle Script - Wait action finished before file.delete()
gradle 我正在下载 API 的 zip 文件。之后我解压这个文件,接下来我想删除它。
为此我尝试了很多方法,但找不到正确的解决方案。
我非常熟悉 Gradle 语法(doLast、doFirst)。
task downloadAndDelete(type: Copy) {
doLast {
blablabla
def zipFile = file(pathFile + fileName)
println '-------- Download zipfile --------'
blablabla
from zipTree(zipFile)
into pathFile
println '-------- Deleting zipfile --------'
zipFile.delete()
}
}
有时我会出错Cannot convert path to File. path='property (@OutputDirectory destinationDir) for task 'downloadUpdatedStrings''
有时我的 zipFile 在解压完成之前就被删除了。
确定这个文件解压完成后,如何删除我的 zip 文件。
我也尝试了 ['unzip', '-o', zipFile, '-d', pathFile].execute()
,但结果相同。
您应该为三个步骤(download
、unzip
和 delete
)中的每一个使用一个任务:
task downloadMyFile {
doLast {
// somehow download your file, e.g.
file('myFile.zip') << new URL("http://some.url/some/path/file.zip").getText()
}
}
task unzipMyFile(type: Copy) {
dependsOn downloadMyFile
from zipTree('myfile.zip')
into 'target/path'
finalizedBy deleteMyFile
}
task deleteMyFile(type: Delete) {
mustRunAfter unzipMyFile
delete downloadMyFile
}
现在调用unzipMyFile
(或将其用作另一个任务的输入)来执行所有任务就足够了。
请注意,通常不需要在使用后删除文件。只需将它们放在 build
目录中的任何位置,下一个 clean
操作将无论如何将其删除。
gradle 我正在下载 API 的 zip 文件。之后我解压这个文件,接下来我想删除它。
为此我尝试了很多方法,但找不到正确的解决方案。
我非常熟悉 Gradle 语法(doLast、doFirst)。
task downloadAndDelete(type: Copy) {
doLast {
blablabla
def zipFile = file(pathFile + fileName)
println '-------- Download zipfile --------'
blablabla
from zipTree(zipFile)
into pathFile
println '-------- Deleting zipfile --------'
zipFile.delete()
}
}
有时我会出错Cannot convert path to File. path='property (@OutputDirectory destinationDir) for task 'downloadUpdatedStrings''
有时我的 zipFile 在解压完成之前就被删除了。
确定这个文件解压完成后,如何删除我的 zip 文件。
我也尝试了 ['unzip', '-o', zipFile, '-d', pathFile].execute()
,但结果相同。
您应该为三个步骤(download
、unzip
和 delete
)中的每一个使用一个任务:
task downloadMyFile {
doLast {
// somehow download your file, e.g.
file('myFile.zip') << new URL("http://some.url/some/path/file.zip").getText()
}
}
task unzipMyFile(type: Copy) {
dependsOn downloadMyFile
from zipTree('myfile.zip')
into 'target/path'
finalizedBy deleteMyFile
}
task deleteMyFile(type: Delete) {
mustRunAfter unzipMyFile
delete downloadMyFile
}
现在调用unzipMyFile
(或将其用作另一个任务的输入)来执行所有任务就足够了。
请注意,通常不需要在使用后删除文件。只需将它们放在 build
目录中的任何位置,下一个 clean
操作将无论如何将其删除。