jenkins2的核心是pipeline,pipeline的核心是groovy。java
那有一些基础的groovy是必须常常使用的,如变量赋值,变量引用,打印变量,输出字符,任务调用,循环判断等。dom
Groovy变量测试
注意:在jenkins里面配置Groovy变量时,注意进行测试,不要同Groovy自带的变量冲突!!!设计
既然是脚本语言,Groovy的变量也被设计成为了相似的弱类型,实际上Groovy同时支持强类型变量和“弱”类型变量,强类型变量拥有本身的类型,而“弱”类型变量则所有会被编译为Object类型,从代码的角度上,Groovy的变量无需声明类型了:对象
// groovy可使用类型肯定的变量或常量 String s1 = "Hello " print s1 final String s2 = "World" println s2 // 利用def关键字能够定义可变类型的变量或常量 def s3 = "Welcome " print s3 // 对于可变类型,即随时能够改变其类型,赋予不一样的量 s3 = 123 // 此时str3被赋予了整型量,因此其类型变为Integer类型 println s3 s3 += 100 // 整型的str3和整型相加,结果是整型223 println s3 s3 = true // str3目前是boolean类型 println ("Ok " + s3) // 对于局部变量,甚至能够不使用def关键字来定义 s4 = "Good job" println s4 // 对于数值类型,有以下规则 int n1 = 10 n2 = n1 / 3 println n2 // 对于n1为整数时, 10 / 3的结果并非整数,这说明常量n2并非整数 int n3 = n1 / 3 // 明肯定义n3为整数后,相除的结果为整数 println n3 n2 = n1.intdiv(3) println n2 // intdiv用于进行整除 n2 = n1.power(2) // 求平方 groovy方法 println n2 n2 = n1 ** 2 // 求平方的groovy语法 println n2 n1 = Math.sqrt(n2) // 求开方 java方法 println n1
从上面的代码能够看到,Groovy支持有类型的变量,例如String s;也支持无类型的变量,例如def s,至关于Java中的Object s;对于无类型的变量,甚至能够不写def关键字。blog
final关键字依然做为常量标识,这一点和Java相同。ip
最后注意一点,Groovy中没有Java中的值类型简单对象,全部的对象都是引用类型对象,例如定义def n = 10,n的类型应该是Integer类型而不是int类型;即使定义了int n = 100,n的类型依然是Integer类型;若是定义了def n = 12.34,则注意,n的类型是BigDecimal类型而不是Double类型,只有显式定义double n = 12.34,n的类型才明确为Double类型(依旧不是double类型)ci
对于基本算术运算符,Groovy增长了**运算符,表示求幂,x ** y表示求x的y次方;字符串
分支结构语句input
Groovy的结构化语句仍旧是三种:顺序结构、分支结构和循环结构,其中分支结构和循环结构增长了不少意想不到的功能,先看分支结构:
// groovy中if条件分支的新规定 // groovy中,非0的数值能够表示true int num = 0 if (num) { println "True" } else { println "False" } println (++num ? "True" : "False") if (!!num) { // !!运算符能够将num转化为boolean类型 println "num=${num}为${!!num}" } println "" // 引用为null时,表示false Object o = null if (o) { println "True" } else { println "False" } o = new Date() if (o) { println "True" } else { println "False" } println "" // 字符串为""时,表示false String s = "" if (s) { println "True" } else { println "False" } s += "hello" if (s) { println "True" } else { println "False" } println "" // 集合为空时,表示False ArrayList array = new ArrayList() if (array) { println "True" } else { println "False" } array.add(100) if (array) { println "True" } else { println "False" } println "" // groovy中switch选择分支的新规定 // switch对字符串类型的支持 print "Please input your words: " s = new BufferedReader(new InputStreamReader(System.in)).readLine() switch (s) { case "how are you": println "fine, thank you" break; case "how do you do": println "how do you do too" break; default: println "nice to meet you" } // switch对集合和范围的支持 n = new Random().nextInt(101) print "you got ${n} point, " switch (n) { case [98, 99, 100]: // n为98, 99, 100这三个数字时 println "very good!!" break; case 90 .. 97: // n为90-97之间时 println "nice job!!" break; case 70 .. 89: // n为70-89之间时 println "good" break; case 60 .. 79: // n为60-79之间时 println "can be better" break; case {it > 0 && it < 60}: // n比0大且比60小时 println "too bad" break; case 0: // n为0时 println "nothing to say" break; }
首先,Groovy对boolean类型放宽了限制: