我想从1.0.0增加项目的版本号。只要通过bash命令创建新的构建,就会自动到1.0.1。我只需要增加路径数量,其他的我会在手动构建期间手动增加。使用gradle任务的版本增量
我想改变
这样:
version=1.0.0
到 此:
version=1.0.1
使用gradle这个任务。 任何帮助,我该如何做到这一点。 有什么方法可以使用正则表达式或使用子字符串函数来更新它。
我想从1.0.0增加项目的版本号。只要通过bash命令创建新的构建,就会自动到1.0.1。我只需要增加路径数量,其他的我会在手动构建期间手动增加。使用gradle任务的版本增量
我想改变
这样:
version=1.0.0
到 此:
version=1.0.1
使用gradle这个任务。 任何帮助,我该如何做到这一点。 有什么方法可以使用正则表达式或使用子字符串函数来更新它。
下面是一个例子任务:
version='1.0.0' //version we need to change
task increment<<{
def v=buildFile.getText().find(version) //get this build file's text and extract the version value
String minor=v.substring(v.lastIndexOf('.')+1) //get last digit
int m=minor.toInteger()+1 //increment
String major=v.substring(0,v.length()-1) //get the beginning
//println m
String s=buildFile.getText().replaceFirst("version='$version'","version='"+major+m+"'")
//println s
buildFile.setText(s) //replace the build file's text
}
运行此任务几次,你应该看到的版本变化。
的变体:
version='1.0.0'
task incrementVersion<<{
String minor=version.substring(version.lastIndexOf('.')+1)
int m=minor.toInteger()+1
String major=version.substring(0,version.length()-1)
String s=buildFile.getText().replaceFirst("version='$version'","version='"+major+m+"'")
buildFile.setText(s)
}
以下解决方案将不会evern创建一个问题最后一个号码从9-10超过等
version='1.0.11.1001'
task incrementrevsion{
def v = version
println v
String minor=v.substring(v.lastIndexOf('.')+1) //get last digit
int m=minor.toInteger()+1 //increment
println m
String major=v.substring(0,v.lastIndexOf(".")); //get the beginning
println major
String s=buildFile.getText().replaceFirst("version='$version'","version='"+major+ "." +m+"'")
//println s
buildFile.setText(s) //replace the build file's text
}
您也可以使用分裂与增量矩阵,这可以根据更改的数量进行更改:
def version = '1.0.0'
def incstep = '0.0.1'.split(/\./).collect{it.toInteger()}
def indexedVersionList = version.split(/\./).toList().withIndex()
def updatedVersionList = indexedVersionList.collect{num, idx -> num.toInteger()+incstep[idx]}
def updatedVersion = updatedVersionList.join(".")
'def v = buildFile.getText()。find(version)'here在这里有什么好处?那不是马上给你'版本'吗? – cfrick
是的,你可以省略,直接引用版本。但是如果你不想在版本没有设置的情况下失败,你可以添加'if(v)'check到那个任务。但是,如果您执行'if(version)'检查并且版本未设置,则构建将失败。 – Alexiy
@Alexity这将创建一个问题,如果版本='1.0.100' – Sushant