我相信计算机是做重复性任务的最佳选择.我当然不是,我要么忘记,要么(大多数时候)不以一致的方式做事 - 这不是我想要的.
我可能要做的一件事是在发布新版本的Android应用时忘记清单中的版本信息.在过去,我使用过具有自动版本编号功能的配置构建系统,并且我已经习惯了(或者我很懒).
我发现这个Stackoverflow帖子在提出解决方案时非常有用,但是我花了一段时间对它进行微调,以便它按照我想要的方式工作.早期的尝试有时会导致继续建设,这是一个痛苦.所以我想我会在这里发布我的解决方案,希望别人会发现它有用.
嘿我已经创建了一个Groovy脚本,它将提取某些文件夹的版本号.然后我想比较版本号并选择最高版本.
我让我的脚本通过dir文件夹运行,然后我得到这种格式的版本: 02.2.02.01
所以我可以得到这样的东西:
我没有它们作为列表,但像这样:
baseDir.listFiles().each { file ->
def string = file.getName().substring(5, 15)
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
此外,我已经测试过Groovy可以将它们与>运营商进行比较,它可以!但现在我需要选择版本最高的那个
我正在尝试使用gradle build系统通过git包括我的应用程序的版本。我想运行以下命令从git获取版本信息:
git describe --tags --match "v[0-9]*"
Run Code Online (Sandbox Code Playgroud)
从这里阅读参考之后,我正在使用以下gradle语法:
commandLine 'git', 'describe', '--tags', '--long', '--match "v[0-9]*"'
Run Code Online (Sandbox Code Playgroud)
但这会导致执行错误。
错误:未知选项`match v [0-9] *'
我曾尝试用反斜杠转义双引号,但这也不起作用。有人可以指出我通过gradle执行上述命令的正确方法吗?
我想获取存储库中标签计数的总数
该grgit库已经解决了这个问题。
git = org.ajoberstar.grgit.Grgit.open()
git.tag.list().size()
Run Code Online (Sandbox Code Playgroud)
但它在 groovy 中,我想要它的 gradle 版本。
git describe --tags $(git rev-list --tags --count)
Run Code Online (Sandbox Code Playgroud)
上面的代码给出了提交的总数
到目前为止,我有以下代码段可以获取提交的总数。
versionCode = { ->
try {
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-list', '--first-parent', '--count', 'HEAD'
standardOutput = stdout
}
return Integer.parseInt(stdout.toString().trim())
}
catch (ignored) {
return -1
}
}
Run Code Online (Sandbox Code Playgroud)
我已经引用了这个 SO 问题,但没有正确的答案