[英]Use `git describe --match` In Android build.gradle
無法獲取與傳遞給 Gradle 中的git describe
的 glob 匹配的最新 git 標簽。 在終端時它工作正常。
我嘗試了以下方法:
project.ext.releaseVersionName = "git describe --match \'[0-9]*.[0-9]*.[0-9]*\' --abbrev=0 --tags".execute().text.trim()
和
def getReleaseVersion = { ->
try {
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'bash', '-c', 'git', 'describe', '--match "[0-9]*.[0-9]*.[0-9]*"', '--abbrev=0', 'HEAD'
standardOutput = stdout
}
return stdout.toString().trim()
}
catch (ignored) {
return null
}
}
但是兩者都返回空字符串。 如果我沒有匹配項,則一切正常。 我認為是導致問題的原因。
通過將整個'--match "[0-9]*.[0-9]*.[0-9]*"'
放在單引號中,您基本上是在傳遞一個包含整個字符串的選項。 您真正想要的可能是將選項--match
與[0-9]*.[0-9]*.[0-9]*
的參數一起傳遞。 因此,你應該讓你的分裂這樣的說法commandLine
變為:
commandLine 'git', 'describe', '--match', '[0-9]*.[0-9]*.[0-9]*', '--abbrev=0', 'HEAD'
或者,您可以將--match
參數切換為--arg=value
語法,即使用--match=[0-9]*.[0-9]*.[0-9]*
就像您對--abbrev=0
。
我已經根據評論刪除了'bash', '-c'
部分。 如果要使用'bash', '-c'
,則其余部分應該是單個字符串,因為它將用作bash
的-c
參數的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.