Android studio Gradle在Windows上找不到git.exe
我的Android Studio项目使用gradle的git将git SHA-1包含在构建的工件中:Android studio Gradle在Windows上找不到git.exe,android-studio,gradle,git-bash,Android Studio,Gradle,Git Bash,我的Android Studio项目使用gradle的git将git SHA-1包含在构建的工件中: def getGitVersion = { -> def stdout = new ByteArrayOutputStream() exec { commandLine 'git', 'rev-parse', '--short', 'HEAD' standardOutput = stdout } return stdout.t
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(' ')
}
}
}
系统范围内的环境变量也应该应用于Gradle守护进程。好吧,这对我来说是没有用的,因为我想让它在不同的平台和机器上工作。如果我添加它,它将在Linux上中断。我看不出gradle为什么不尊重环境变量?@thokuest Right!?我看不出这里出了什么问题。@JHH不过,在Windows上使用cmd/c被认为是最佳实践。您考虑过使用吗?