如何通过Gradle在Windows上执行Git命令?

如何通过Gradle在Windows上执行Git命令?,windows,git,gradle,command,Windows,Git,Gradle,Command,因此,我有以下代码片段: def getVersion = { -> def stdout = new ByteArrayOutputStream() exec { commandLine 'git', 'describe', '--tags' standardOutput = stdout } return stdout.toString().trim() } 无论何时调用getVersion(),都会出现以下错误: *

因此,我有以下代码片段:

def getVersion = { ->
    def stdout = new ByteArrayOutputStream()
    exec {
        commandLine 'git', 'describe', '--tags'
        standardOutput = stdout
    }
    return stdout.toString().trim()
}
无论何时调用
getVersion()
,都会出现以下错误:

* What went wrong:
A problem occurred evaluating root project 'ForgeWorkspace'.
> Process 'command 'git'' finished with non-zero exit value 128

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 6.442 secs

在我的MacBookPro上,我从未遇到过这个问题,但在Windows上确实遇到过。非常感谢您的帮助

在windows上,
commandLine
的前两个参数应该是cmd和/c

//on windows:
commandLine 'cmd', '/c', 'git'...

看。

@愤怒几乎是正确的。由于您确实需要使用Windows命令提示符(cmd)让操作系统在系统路径中搜索git可执行文件,因此整个git命令应该作为一个参数传递,该参数位于
/c
开关之后(这意味着“execute Command”)

因此,以下措施应该有效:

commandLine 'cmd', '/c', 'git describe --tags'

你可能会考虑查看Git Git插件,而不是自己编码:(也许它提供了你正在寻找的)我不想添加另一个插件,如果我不需要的话。如果您有一个使用该插件实现我的函数的答案,请将其放到下面。我添加了
commandLine'cmd'、'/c'、'git'、'descripe'、'-tags'
,但仍然得到了几乎相同的错误,除了用'cmd'代替'git'。
getversion
应该是任务吗?不,它应该返回基于最新Git版本的唯一版本并提交。该功能在我的MacBook上运行良好,但由于某些原因,在我的Windows计算机上无法运行。唯一的问题是
命令行
行。请使用
--stacktrace运行并发布您的stacktrace。我也会尝试使用git的完整路径,而不仅仅是
'git'