Variables 定义一个变量,如果在定义过程中出现问题,则将其设置为默认值

Variables 定义一个变量,如果在定义过程中出现问题,则将其设置为默认值,variables,gradle,null,default-value,Variables,Gradle,Null,Default Value,我的build.gradle中有以下代码 version.properties中的内容包括: buildVersion=1.2.3 渐变构建期间,$v变量的值如下:1.2.3 JENKINS build中$artifactoryVersion变量的值为:1.2.3.1,1.2.3.2,1.2.3.x。。。以此类推,第四位数字是Jenkins构建期间gradle构建脚本可用的Jenkins构建号 但是,当我在桌面上运行这个build.gradle时,如果我的环境变量中没有可用的build\u

我的
build.gradle中有以下代码

version.properties中的内容包括:

buildVersion=1.2.3
  • 渐变构建期间,
    $v
    变量的值如下:1.2.3
  • JENKINS build中
    $artifactoryVersion
    变量的值为:1.2.3.1,1.2.3.2,1.2.3.x。。。以此类推,第四位数字是Jenkins构建期间gradle构建脚本可用的Jenkins构建号
但是,当我在桌面上运行这个
build.gradle
时,如果我的环境变量中没有可用的build\u NUMBER变量或未设置该变量,我会收到一个错误,说
trim()
不能在null上工作。(因为桌面/本地版本没有
版本号

我正试图找到一种方法,即

  • 我应该在脚本中编写什么代码,以便如果
    BUILD\u NUMBER
    不可用,那么它将设置
    jenkinsBuild=“0”
    (硬编码),而不是因为错误而导致gradle构建处理失败,否则,选择在Jenkins构建期间获得的内容

    例如:在Bash中,我们设置一个变量
    var1=${BUILD_NUMBER:-“0”}
    ,该变量将
    var1
    设置为有效的Jenkins构建编号(如果可用)并设置为值,否则如果为NULL,则设置为
    var1=“0”

  • 我不想让每个开发人员/用户在某个属性文件中设置此
    BUILD\u NUMBER
    。我想要的是,如果这个变量不存在,那么代码应该在jenkinsBuilds变量中放入
    “0”
    ,并且在桌面构建期间不会出错。我知道在詹金斯建造期间,它运行良好


  • 您只需要一些常规Java/Groovy代码:

    def jenkinsBuild = System.getenv("BUILD_NUMBER") ?: "0"
    
    上面的代码使用Groovy的“elvis”运算符,是以下代码的简写,它使用Java的三元运算符:

    def buildNumber = System.getenv("BUILD_NUMBER")
    def jenkinsBuild = buildNumber != null ? buildNumber : "0"
    

    下面是使用Java普通对象(JDK8)的答案:

    公共类示例{
    私有字符串区域;
    私家串果;
    公共样本(){
    region=System.getenv().getOrDefault(“region”,null);
    水果=System.getenv().getOrDefault(“水果”、“苹果”);
    }
    }
    
    使用该插件,您可以获取和设置构建参数

    例如,在“将环境变量注入构建过程”下,添加Groovy脚本,例如:

    def paramsMap  = [:]
    def build = Thread.currentThread().executable
    def my_var = build.getEnvVars()["MY_PARAM"]
    
    if (!my_var) paramsMap.put("MY_PARAM", "default value")
    
    // Return parameters map 
    out.println("Injecting parameters:\n" + paramsMap)
    return paramsMap
    
    def paramsMap  = [:]
    def build = Thread.currentThread().executable
    def my_var = build.getEnvVars()["MY_PARAM"]
    
    if (!my_var) paramsMap.put("MY_PARAM", "default value")
    
    // Return parameters map 
    out.println("Injecting parameters:\n" + paramsMap)
    return paramsMap