2016-10-03 6 views
1

Я хочу увеличить номер версии моего проекта с 1.0.0. до 1.0.1 автоматически всякий раз, когда новая сборка выполняется с помощью команды bash. Мне нужно только увеличить номер пути, а другие я буду увеличивать вручную во время ручной сборки.Увеличение версии с помощью задачи градации

я хочу изменить

это:

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)' check к этой задаче. Но если вы выполните 'if (version)' check и версия не установлена, сборка завершится неудачно. – 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(".") 
Смежные вопросы