我正在尝试使用gradle / groovy用新的/递增的值替换我的version.gradle文件中的特定变量值,该文件包含许多其他变量
以下是我的version.gradle文件,格式如下
ext {
def planName = System.env.bamboo_buildPlanName
//println planName
testversion="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'
}
下面是我尝试使用的代码,用于从1.1.1.49 ----> 1.1.1.50递增/更改crversion的值,因此每次它将递增+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'的格式,如果value是crversion =“1.2.3”,则它不起作用。
最佳答案
当然,这是行不通的,因为在您的代码file.text.replace("crversion='$crversion '","crversion='"+major+ "." +m+"'")
中,您只是将'version_number'
之类的内容替换为其他版本。
您无需处理类似"version_number"
的情况。
考虑到性能不是gradle脚本中考虑的愚蠢修复file.setText(s.replace("crversion=\"$crversion \"","crversion='"+major+ "." +m+"'"))
。
关于java - 使用gradle/groovy任务将变量值替换为其他文件中的新更改/增量值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47609508/