syntax
Library代码结构介绍
共享库的目录结构如下:
(root)
+- src # Groovy source files
| +- org
| +- foo
| +- Bar.groovy # for org.foo.Bar class
+- vars
| +- devops.groovy # for global 'foo' variable
| +- foo.txt # help for 'foo' variable
src
目录应该看起来像标准的 Java 源目录结构。当执行流水线时,该目录被添加到类路径下。
vars
目录定义可从流水线访问的全局变量的脚本。 每个 *.groovy
文件的基名应该是一个 Groovy (~ Java) 标识符, 通常是 camelCased
。
Groovy基本语法介绍
新建Groovy项目
-
变量
使用数据类型的本地语法,或者使用def关键字
// Defining a variable in lowercase
int x = 5;
// Defining a variable in uppercase
int X = 6;
// Defining a variable with the underscore in it's name
def _Name = "Joe";
println(x);
println(X);
println(_Name); -
方法
-
调用本地方法
def sum(int a, int b){
return a + b
}
println(sum(1,2)) -
调用类中的方法
# Bar.groovy
package org.foo
def sayHi(String content) {
println ("hi, " + content)
}
# devops.groovy
import org.foo.*
def res = new Bar().sayHi("devops")
println(res)
# 级联调用
# Bar.groovy
package demo
def init(String content) {
this.content = content
return this
}
def sayHi() {
println("hi, " + this.content)
return this
}
def sayBye() {
println("bye " + this.content)
}
# devops.groovy
import org.foo.*
new Bar().init("devops").sayHi().sayBye()
-
-
异常捕获
def exceptionDemo(){
try {
def val = 10 / 0
println(val)
}catch(Exception e) {
println(e.toString())
//throw e
}
}
exceptionDemo() -
计时器与循环
import groovy.time.TimeCategory
use( TimeCategory ) {
def endTime = TimeCategory.plus(new Date(), TimeCategory.getSeconds(15))
def counter = 0
while(true) {
println(counter++)
sleep(1000)
if (new Date() \>= endTime) {
println("done")
break
}
}
} -
解析json文件
import groovy.json.JsonSlurper
def jsonSlurper = new JsonSlurper()
def config = jsonSlurper.parse(new File('json.json'))
println(config.metadata.name)