使用gradle我可以下载带有API的zipfile。之后,我解压缩此文件,接下来我要删除它。
我为此做了很多尝试,但无法找到正确的解决方案。
我非常喜欢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。
如果确保完成解压缩后,如何删除我的zipFile。
我也尝试了['unzip', '-o', zipFile, '-d', pathFile].execute()
,但结果相同。
答案 0 :(得分:1)
您应该为三个步骤(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
操作将无论如何都将其删除。