【问题标题】:Gradle cannot find git.exe on WindowsGradle 在 Windows 上找不到 git.exe
【发布时间】:2020-05-04 08:26:10
【问题描述】:

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

【问题讨论】:

    标签: android-studio gradle git-bash


    【解决方案1】:

    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 对!?我看不出这里出了什么问题。
    • @JHH 尽管如此,在 Windows 上使用 cmd /c 被认为是最佳实践。
    • 你考虑过使用Grgit吗?
    猜你喜欢
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多