Git与Gradle版本控制

4

我正在尝试使用Git在Gradle中实现自动版本控制,但是在构建应用程序时出现了一些错误。我的操作系统是Windows。

def getVerName = { ->
    try {
        def stdout = new ByteArrayOutputStream()
        exec {
            commandLine "git", "describe", "--long"
            standardOutput = stdout
        }
        def result = stdout.toString()
        result = result.trim()
        return result
    } catch (ignored) {
        return null
    }
}

这是我的异常堆栈跟踪

我的GIT路径: C:\Program Files\Git\cmd。将PATH设置为本地变量没有任何作用。从堆栈跟踪中可以看到Gradle正在寻找一个应用程序目录中的git.exe文件。如何更改该路径?

org.gradle.process.internal.ExecException: A problem occurred starting process 'command 'git''
    at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.java:197)
    at org.gradle.process.internal.DefaultExecHandle.failed(DefaultExecHandle.java:327)
    at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:86)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
    at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Error:net.rubygrapefruit.platform.NativeException: Could not start 'git'
    at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27)
    at net.rubygrapefruit.platform.internal.WindowsProcessLauncher.start(WindowsProcessLauncher.java:22)
    at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.java:36)
    at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:68)
    ... 5 more
Error:java.io.IOException: Cannot run program "git" (in directory "C:\Users\Mellony\Resg\app"): CreateProcess error=2, The system cannot find the file specified 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)
    ... 8 more
Error:java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:386)
    at java.lang.ProcessImpl.start(ProcessImpl.java:137)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    ... 9 more

如果你使用git的完整路径会怎样? - RaGe
请尝试执行以下命令:commandLine "cmd", "/c", "git", "describe", "--long" - Opal
@RaGe,全路径工作正常。 - Near1999
2个回答

2
如果Gradle在寻找Git的位置时出现问题,建议尝试使用Git可执行文件的完整路径,或者为Exec设置workingDir值。
exec {
  workingDir '../path/to/git/bin'
  commandLine 'cmd', '/c', 'git',...
}

1

我曾经遇到过同样的问题,但最终发现环境变量中未设置git路径。 我将以下路径添加到PATH变量中,这样就可以正常工作了: C:\Program Files\Git\cmd C:\Program Files\Git\bin\git.exe


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接