我尝试仅在自上次构建后更新文件时才运行exec任务。我最初的尝试看起来像这样:
task generateLocalizedStrings(type:Exec) {
ext.srcFile = file('../../../localization/language-files/en_US/wdmobilestringres.properties')
ext.destDir = new File("src/main/res")
inputs.file srcFile
outputs.dir destDir
doLast {
println "Executing localization script"
workingDir '../../../localization/'
commandLine 'python', 'localizationScript.py'
}
}
然而,这与" execCommand == null!"
失败我找到了一个解决方法,但我真的更喜欢一个合适的解决方案。
task generateLocalizedStrings(type:Exec) {
ext.srcFile = file('../../../localization/language-files/en_US/wdmobilestringres.properties')
ext.destDir = new File("src/main/res")
inputs.file srcFile
outputs.dir destDir
workingDir '../../../localization/'
commandLine 'python', 'dummyScript.py'
doLast {
println "Executing localization script"
workingDir '../../../localization/'
commandLine 'python', 'localizationScript.py'
}
}
答案 0 :(得分:10)
一种选择是使任务成为通用任务并显式调用exec
dsl。例如。从这个:
task("MyTask", type: Exec) {
doLast {
commandLine "your commandline"
}
}
到这个
task("MyTask") {
doLast {
exec {
commandLine "your commandline"
}
}
}
答案 1 :(得分:3)
您需要摆脱doLast
阻止,而是在该阻止之外配置workingDir
和commandLine
。 (在运行后配置任务太晚了。)