Groovy 使用Gradle,如何确保命令存在
我正在使用Gradle for AOSP,我想检查我的构建环境中是否存在命令Groovy 使用Gradle,如何确保命令存在,groovy,build.gradle,Groovy,Build.gradle,我正在使用Gradle for AOSP,我想检查我的构建环境中是否存在命令 task printCommand{ doLast{ def command = "git --version" println command.execute().text } } 上面的代码运行完美,它将打印命令“git--version”的输出 但我尝试另一个命令,根据 它总是像这样显示错误的信息 任务“:printCommand”的执行失败。 java.io.I
task printCommand{
doLast{
def command = "git --version"
println command.execute().text
}
}
上面的代码运行完美,它将打印命令“git--version”的输出
但我尝试另一个命令,根据
它总是像这样显示错误的信息
任务“:printCommand”的执行失败。
java.io.IOException:无法运行程序“命令”:错误=2,没有这样的文件或目录
为什么我不能以这种方式使用“command-v docker”
有没有更好的方法来检查Gradle中是否存在命令
命令
是内置的bash命令,而不是二进制命令
groovy的
String.execute
将启动一个进程。启动进程的二进制文件必须是完全限定的(例如,“/usr/bin/docker--version”
),或者必须在$PATH
(或%PATH%
)返回主题,我找到了确保使用Gradle时存在命令的方法,此代码可以避免Gradle脚本被非零exitValue终止,并打印适当的信息
task checkCommand{
doLast{
result = exec{
def command = "command -v docker"
ignoreExitValue = true
executable "bash" args "-l", "-c", command
}
if(result.getExitValue()==0){
println "Has Docker"
}else{
print "No Docker"
}
}
}
更新2019/02/23
如果出现此错误:
无法为任务设置未知属性“结果”:的checkCommand
键入org.gradle.api.DefaultTask
在
result
前面添加def
将解决此问题。您所说的“完全合格”是什么意思?为我工作<代码>任务打印命令{doLast{exec{def command=“command-v docker”可执行文件bash“args”-l“,“-c”,command}}}
task checkCommand{
doLast{
result = exec{
def command = "command -v docker"
ignoreExitValue = true
executable "bash" args "-l", "-c", command
}
if(result.getExitValue()==0){
println "Has Docker"
}else{
print "No Docker"
}
}
}