git.exe 未被 gradle 找到
git.exe is not found by gradle
我的 Android Studio 项目使用来自 gradle 的 git :
branchName = ByteArrayOutputStream().use { outputStream ->
exec {
commandLine("git branch --show-current")
standardOutput = outputStream
}
outputStream.toString()
}
在 Linux 和 Mac 上,这工作得很好,但在 Windows 上它说:
Could not start 'git'
我必须用这个替换它:
commandLine("cmd", "/c", "git branch --show-current")
这违背了我的目的,因为我希望它能在不同的平台和机器上工作。如果我添加它,它会在 Linux 和 Mac 处中断。
对我应该做什么有什么建议吗?
你或许可以OS这样检查
import org.apache.tools.ant.taskdefs.condition.Os
// ...
branchName = ByteArrayOutputStream().use { outputStream ->
exec {
if (Os.isFamily(Os.FAMILY_WINDOWS)) commandLine("cmd", "/c", "git branch --show-current")
else commandLine("git branch --show-current")
standardOutput = outputStream
}
outputStream.toString()
}
如果你真的只想用linux的方式实现,你可以试试WSL——
Windows Subsytem for Linux. Here is an additional instruction for 运行 Android Studio with this.
它可以工作,但需要一些配置,但通常它对你的情况来说有点矫枉过正,我认为 @deecue 是正确的 sugesting small if - 查看文档:https://docs.gradle.org/current/dsl/org.gradle.api.tasks.Exec.html
你可以用更愉快和可重用的方式来做——作为一个提取的方法:
import org.apache.tools.ant.taskdefs.condition.Os
// ...
fun runCommand(command: String, windowsDir: String = "/c") {
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
commandLine("cmd", windowsDir, command)
} else {
commandLine(command)
}
}
// ...
branchName = ByteArrayOutputStream().use { outputStream ->
exec {
runCommand("git branch --show-current")
standardOutput = outputStream
}
outputStream.toString()
}
我的 Android Studio 项目使用来自 gradle 的 git :
branchName = ByteArrayOutputStream().use { outputStream ->
exec {
commandLine("git branch --show-current")
standardOutput = outputStream
}
outputStream.toString()
}
在 Linux 和 Mac 上,这工作得很好,但在 Windows 上它说:
Could not start 'git'
我必须用这个替换它:
commandLine("cmd", "/c", "git branch --show-current")
这违背了我的目的,因为我希望它能在不同的平台和机器上工作。如果我添加它,它会在 Linux 和 Mac 处中断。 对我应该做什么有什么建议吗?
你或许可以OS这样检查
import org.apache.tools.ant.taskdefs.condition.Os
// ...
branchName = ByteArrayOutputStream().use { outputStream ->
exec {
if (Os.isFamily(Os.FAMILY_WINDOWS)) commandLine("cmd", "/c", "git branch --show-current")
else commandLine("git branch --show-current")
standardOutput = outputStream
}
outputStream.toString()
}
如果你真的只想用linux的方式实现,你可以试试WSL—— Windows Subsytem for Linux. Here is an additional instruction for 运行 Android Studio with this.
它可以工作,但需要一些配置,但通常它对你的情况来说有点矫枉过正,我认为 @deecue 是正确的 sugesting small if - 查看文档:https://docs.gradle.org/current/dsl/org.gradle.api.tasks.Exec.html
你可以用更愉快和可重用的方式来做——作为一个提取的方法:
import org.apache.tools.ant.taskdefs.condition.Os
// ...
fun runCommand(command: String, windowsDir: String = "/c") {
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
commandLine("cmd", windowsDir, command)
} else {
commandLine(command)
}
}
// ...
branchName = ByteArrayOutputStream().use { outputStream ->
exec {
runCommand("git branch --show-current")
standardOutput = outputStream
}
outputStream.toString()
}