Aru*_*gal 47 variables null default-value gradle
我的代码中包含以下代码 build.gradle
内容version.properties是:
buildVersion=1.2.3
Run Code Online (Sandbox Code Playgroud)
$vGradle构建期间变量的值如下:1.2.3$artifactoryVersionJENKINS构建中变量的值如下:1.2.3.1,1.2.3.2,1.2.3.x ...等等,在Jenkins构建期间,第四位数字是Jenkins BUILD_NUMBER可用于gradle构建脚本.但是,当我build.gradle在我的桌面上运行这个,我没有可用的BUILD_NUMBER变量或在我的环境变量中设置时,我收到一个错误,说trim()无法在null上工作.(因为BUILD_NUMBER桌面/本地版本没有).
我正试图找到一种方式即
我应该在我的脚本中编写什么代码,以便如果BUILD_NUMBER不可用,那么代替gradle构建处理失败的错误,它设置jenkinsBuild = "0"(硬编码)否则,选择它在Jenkins构建期间获得的内容.
例如:在Bash中,我们设置一个变量var1=${BUILD_NUMBER:-"0"},var1如果它可用并设置为一个值,它将设置为有效的Jenkins BUILD编号,否则如果它为NULL,则为var1 = "0".
我不想让每个开发人员/用户BUILD_NUMBER在一些属性文件中设置它.我想要的是,如果这个变量不存在,那么代码应该放在"0"jenkinsBuilds变量中,并且在桌面构建期间不会出错.我知道在Jenkins构建期间,它工作正常.
// Build Script
def fname = new File( 'version.properties' )
Properties props = new Properties()
props.load( new FileInputStream( fname ) )
def v = props.get( 'buildVersion' )
def env = System.getenv()
def jenkinsBuild = env['BUILD_NUMBER'].trim()
if( jenkinsBuild.length() > 0 ) {
artifactoryVersion = "$v.$jenkinsBuild"
}
Run Code Online (Sandbox Code Playgroud)
Pet*_*ser 106
您只需要一些常规的Java/Groovy代码:
def jenkinsBuild = System.getenv("BUILD_NUMBER") ?: "0"
Run Code Online (Sandbox Code Playgroud)
上面的代码使用Groovy的"elvis"运算符,并且是以下代码的简写,它使用Java的三元运算符:
def buildNumber = System.getenv("BUILD_NUMBER")
def jenkinsBuild = buildNumber != null ? buildNumber : "0"
Run Code Online (Sandbox Code Playgroud)
小智 12
这是使用 Java 普通对象 (JDK8) 的答案:
public class Sample {
private String region;
private String fruit;
public Sample() {
region = System.getenv().getOrDefault("REGION", null);
fruit = System.getenv().getOrDefault("FRUIT", "apple");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56053 次 |
| 最近记录: |