Android studio Gradle在Windows上找不到git.exe

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

我的Android Studio项目使用gradle的git将git SHA-1包含在构建的工件中:

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被认为是最佳实践。您考虑过使用吗?