我正在使用Gradle for AOSP,我想检查一下我的构建环境中是否存在命令。
task printCommand{
doLast{
def command = "git --version"
println command.execute().text
}
}
以上代码运行完美,它将打印命令“git --version”的输出。
但是我根据Check if a program exists from a Bash script
尝试了另一个命令task printCommand{
doLast{
def command = "command -v docker"
println command.execute().text
}
}
它总是显示错误的信息。
任务执行失败':printCommand'。 java.io.IOException:无法运行程序“command”:error = 2 ,没有这样的文件或目录
为什么我不能以这种方式使用“命令-v docker”?
有没有更好的方法来检查Gradle中是否存在命令?
答案 0 :(得分:3)
command
是内置的bash命令,而不是二进制文件。
groovy的String.execute
将开始一个过程。启动流程的二进制文件必须具有完全限定条件(例如"/usr/bin/docker --version"
),或者必须在$PATH
(或%PATH%
)
答案 1 :(得分:1)
回到主题,我找到了确保在使用Gradle时存在命令的方法,此代码可以避免Gradle脚本被非零exitValue终止,并打印相应的信息。
<body>
<button class="buttonlogin" onclick="document.getElementById('id01').style.display='block'" style="width:10%;">Login</button>
</body>
更新2019/02/23
如果您收到此错误:
无法为任务':checkCommand'设置未知属性'result' 输入org.gradle.api.DefaultTask
在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"
}
}
}
前添加def
将解决此问题。