android-studio - Gradle在Windows上找不到git.exe

标签 android-studio gradle git-bash

我的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/

相关文章:

testing - 使用 gradle 进行双份 Espresso 测试 - 空测试套件

git - 如何在 Windows 上更改 Git Bash 的默认位置?

windows - 为什么在 git bash 中创建的文件在 Windows 资源管理器中不可见?

java - 引入D8 dexer后,android目前使用哪个编译器将Java编译成.class文件?

android - 多个dex文件用Gradle定义Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat

jar - 有没有办法在build.gradle中自动生成gradle依赖声明?

angularjs - 当我运行 "ionic run android --device"时如何解决运行一个或多个平台的错误

android-studio - 使用 Mac 将鼠标悬停在 Android Studio 中的 WORD 上时复制警告消息

android - 如何在 android studio 中包含应用内图标选择器?

android - Gradle不工作android工作室