簡體   English   中英

在 Android build.gradle 中使用 `git describe --match`

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM