2016-10-03 11 views
1

私のプロジェクトのバージョン番号を1.0.0から増やしたいと思います。新しいビルドがbashコマンドによって行われるたびに自動的に1.0.1に更新されます。私はパス番号を増やすだけで、私は手動でビルド中に手動で増やす必要があります。gradleタスクを使用したバージョン増分

iは

これを変更したい:

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)'とは何ですか?すぐに 'バージョン'をあなたに与えてくれるのではないでしょうか? – cfrick

+0

はい、これを省略してバージョンを直接参照することはできます。しかし、バージョンが設定されていない場合にビルドが失敗したくない場合は、 'if(v)'チェックをそのタスクに追加することができます。しかし、 'if(version)'チェックを行い、バージョンが設定されていなければ、ビルドは失敗します。 – Alexiy

+0

@Alexity version = '1.0.100' – Sushant

0

は、最後の数は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

にあなたはまた、インクリメント・マトリックスとスプリットを使用することができevern問題を作成しません、変更量に応じて変更することができます:

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(".") 
関連する問題