2016-10-03 45 views
1

我想从1.0.0增加项目的版本号。只要通过bash命令创建新的构建,就会自动到1.0.1。我只需要增加路径数量,其他的我会在手动构建期间手动增加。使用gradle任务的版本增量

我想改变

这样:

version=1.0.0

此:

version=1.0.1 

使用gradle这个任务。 任何帮助,我该如何做到这一点。 有什么方法可以使用正则表达式或使用子字符串函数来更新它。

回答

2

下面是一个例子任务:

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) 
} 
+0

'def v = buildFile.getText()。find(version)'here在这里有什么好处?那不是马上给你'版本'吗? – cfrick

+0

是的,你可以省略,直接引用版本。但是如果你不想在版本没有设置的情况下失败,你可以添加'if(v)'check到那个任务。但是,如果您执行'if(version)'检查并且版本未设置,则构建将失败。 – Alexiy

+0

@Alexity这将创建一个问题,如果版本='1.0.100' – Sushant

0

以下解决方案将不会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 
    } 
0

您也可以使用分裂与增量矩阵,这可以根据更改的数量进行更改:

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(".")