我正在尝试使用gradle / groovy替换我的version.gradle文件中的特定变量值,该文件包含许多具有new / incremneted值的其他变量
以下是我的version.gradle文件,格式如下
ext {
def planName = System.env.bamboo_buildPlanName
//println planName
crversion="1.1.1.49"
if (planName != null && project.hasProperty('abc')) {
cAVersion = "${crversion}.${System.env.bamboo_buildNumber}"
//println clVersion
} else if (project.hasProperty("def")){
cAVersion = "${crversion}"}
else if (project.hasProperty("ghf")){
cAVersion = "${crversion}"
}else {
cAVersion = ""
}
ghkVersion = project.findProperty("abcVersion") ?: '1.0.8.66-SNAPSHOT'
lkeVersion = '1.8.0.144.0'
nccVersion = '1.2.7.30-SNAPSHOT'
}
下面是我的代码,我试图用它来增加/改变crversion的值1.1.1.49 ----> 1.1.1.50所以每次增加+1最后一个数字(49-50等等),然后用新值替换crversion变量的值
apply from: "${rootDir}/version.gradle"
task incrementrevsion{
def file = new File('version.gradle')
def v = crversion
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 without period(.)
println major
String s=file.text.replace("crversion='$crversion '","crversion='"+major+ "." +m+"'")
println s
file.setText(s) //replace the build file's text
}
之后我将使用另外两个gradle任务,它将提交文件并将其推送到版本控制。
1)我能够在其他文件中成功更新/增加值,但是如果crversion的值=' 1.2.3'格式如果值是crversion =" 1.2.3"然后它没有用。为什么?
答案 0 :(得分:0)
当然它不会起作用,因为在您的代码file.text.replace("crversion='$crversion '","crversion='"+major+ "." +m+"'")
中,您只需将'version_number'
之类的内容替换为其他版本。
您不处理"version_number"
之类的情况。
一个愚蠢的修复file.setText(s.replace("crversion=\"$crversion \"","crversion='"+major+ "." +m+"'"))
,考虑到性能不是gradle脚本中的问题。