仅当可执行文件存在时,我才尝试执行任务。根据我到目前为止发现的内容,应该使用onlyIf
,但是如果二进制文件不存在,则对onlyif的求值失败(任务也是如此)。因此,如何真正做到这一点。我认为这是一个相当普遍的用例,因此是否必须有某种标准解决方案来解决此类问题?
task test(type: Exec) {
onlyIf {
def result = exec {
ignoreExitValue = true
commandLine 'wskz', '--help'
}
result.exitValue != 0
}
commandLine 'wskz', '--help'
}
答案 0 :(得分:0)
如果要通过执行来检查可执行文件是否存在,可以将try-catch放入onlyIf
谓词中。
task test(type: Exec) {
onlyIf {
try {
def result = exec {
ignoreExitValue = true
commandLine 'wskz', '--help'
}
result.exitValue != 0
} catch (Exception e) {
return false
}
}
commandLine 'wskz', '--help'
}
尝试执行程序以查看其是否“存在”可能不是最佳选择。
PATH
上怎么办?在这种情况下,我不知道您希望构建的行为如何,因此我无法提出确定的替代方案。一种建议是简单地在File.canExecute()
内使用onlyIf
,如果需要搜索PATH
,可以与对which
/ where
的调用结合使用。 / p>