我的Android Studio项目使用gradle中的git(将git SHA-1包括在构建的 Artifact 中):
def getGitVersion = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-parse', '--short', 'HEAD'
standardOutput = stdout
}
return stdout.toString().trim()
}
在Linux和Mac上,这很好用,但是在Windows上,我得到以下信息:
Caused by: org.gradle.api.GradleScriptException: A problem occurred evaluating project ':app'.
at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:92)
...
... 75 more
Caused by: org.gradle.process.internal.ExecException: A problem occurred starting process 'command 'git''
at org.gradle.process.internal.DefaultExecHandle.execExceptionFor(DefaultExecHandle.java:232)
...
... 3 more
Caused by: net.rubygrapefruit.platform.NativeException: Could not start 'git'
at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27)
...
at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:70)
... 4 more
我正在使用Git Bash,并且已将git.exe的路径添加到我的系统和用户环境变量中。
如果我在Android Studio中启动一个终端,则其路径上也会带有
git.exe
。但是当AS启动gradle构建我的项目时,显然Gradle无法找到git.exe
。我找不到任何用于gradle的后台服务或守护程序,以为修改环境变量后重新启动进程可能是问题所在。
那么是什么导致我的build.gradle无法执行git? Gradle是否具有自定义环境的 shell 程序?
最佳答案
Gradle守护程序具有干净/空的环境,并且不继承调用者的环境。
我做这个
ext {
gitExe = 'c:/GIT-2.7.0/bin/git.exe'
}
task clone {
doLast {
exec {
commandLine "cmd /c $gitExe clone https://my-git/project.git".split(' ')
}
}
}
关于android-studio - Gradle在Windows上找不到git.exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59787522/