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

问题描述 投票:2回答:1

无法获取与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
    }
}

但是两者都返回空字符串。如果我没有匹配,那么一切正常。我认为这是导致问题的全局。

android git gradle
1个回答
1
投票

通过将单个引号中的整个'--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',则其余部分应该是单个字符串,因为它将作为-cbash参数的值。

© www.soinside.com 2019 - 2024. All rights reserved.