1.Groovy介绍
参考文档:Groovy Language Documentation
The Apache Groovy programming language - The Groovy Development Kit
Groovy是一种功能强大,可选类型和动态 语言,支持Java平台。旨在提高开发人员的生产力得益于简洁,熟悉且简单易学的语法。可以与任何Java程序顺利集成,并立即为您的应用程序提供强大的功能,包括脚本编写功能,特定领域语言编写,运行时和编译时元编程以及函数式编程。
2. 安装Groovy
- 下载安装包(依赖于JDK,需要先安装JDK)
- 解压安装包 获取安装包bin目录
- 设置环境变量写入/etc/profile文件
下载地址:The Apache Groovy programming language - Download
上传至服务器并解压到/usr/local/groovy-4.0.1目录,配置环境变量。
vim /etc/profile
# 添加以下信息
export GROOVY_HOME=/usr/local/groovy-4.0.1/
export PATH=$PATH:$GROOVY_HOME/bin
source /etc/profile
# 执行有输出控制台表示配置成功
groovysh
直接使用jenkins中的命令行也可以进行groovy命令的执行。
执行groovy命令,点击运行后查看执行结果。
3. Groovy语法
3.1 注释
- 单行注释 //
- 多行注释 /**/
3.2 数据类型
3.2.1 字符串string
字符串表示方式: 单引号、双引号、三单双引号。
string的一些常见操作:
//定义一个字符串类型变量name
String name = 'zhangsan'
String name = "zhangsan"
//定义一个变量包含多行内容
String str = """
jenkins
gitlab
devops
"""
println(str)
//字符串分割操作
String branchName = "release-1.1.1"
println(branchName.split("-"))
println(branchName.split("-")[-1])
println("${env.JOB_NAME}".split("-")[0])
//是否包含release字符串
println(branchName.contains("release"))
//字符串的长度
println(branchName.size())
println(branchName.length())
//使用变量作为值
def message = "hello ${name}"
println(message)
println(message.toString())
//获取元素索引值
println(branchName.indexOf("-"))
//判断字符串以DEV结尾
String jobName = "test-service_DEV"
println(jobName.endsWith("DEV"))
//字符串增添操作
String log = "error: xxxxxx aa"
println(log.minus("a"))
println(log - "a")
println(log.plus("aa"))
println(log + "aa")
//字符串反转
String nums = "1234567"
println(nums.reverse())
3.2.2 列表list
列表的表示: [] [1,2,3,4]
list的一些常用操作:
// list
// 定义一个list
def mylist = [1,2,3,4,4,"devops"]
println(mylist)
// list的元素增删
println(mylist + "jenkins")
println(mylist - "devops")
println(mylist << "java")
def newlist = mylist.add("gitlab")
println(newlist)
// 判断元素是否为空
println(mylist.isEmpty())
// 列表去重
println(mylist.unique())
// 列表反转
println(mylist.reverse())
// 列表排序
println(mylist.sort())
// 判断列表是否包含元素
println(mylist.contains("devops"))
// 列表的长度
println(mylist.size())
//扩展列表定义方式
String[] stus = ["zhangsan", "lisi","wangwu"]
def numList = [1,2,3,4,4,4] as int[]
// 通过索引获取列表元素
println(numList[2])
// 计算列表中元素出现的次数
println(numList.count(4))
3.2.3 映射map
map的表示方式:types = [“maven”:“mvn”] [:]
map的一些常用操作:
// 定义map
def mytools = [ "mvn": "/usr/local/maven",
"gradle": "/usr/local/gradle" ]
// 根据key获取value
println(mytools["mvn"])
println(mytools["gradle"])
// 根据key重新赋值
mytools["mvn"] = "/opt/local/maven"
println(mytools)
mytools.gradle = "/opt/local/gradle"
println(mytools)
// 获取key的value
println(mytools.key("mvn"))
println(mytools.get("mvn"))
// 判断map是否包含某个key或者value
println(mytools.containsKey("gradle"))
println(mytools.containsValue("/usr/local/gradle"))
// 返回map的key 列表
println(mytools.keySet())
// 根据key删除元素
println(mytools.remove("mvn"))
println(mytools)