我正在尝试使用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/

10-10 20:00