2. Groovy 基础知识
[作者:Surpassme] 因为pipeline是基于Groovy
的,所以还是需要一些基础的Groovy知识的。
2.1 Groovy 简介
[作者:Surpassme] Groovy 是Apache
旗下的一门基于JVM
平台的动态/敏捷
编程语言。语法简洁灵活,开发效率也比较高,且能够与Java语言无缝对接,可以在写Groovy时语法按Java的语法继续写,也能在Java中调用Groovy脚本,均可以很好运行。
2.2 Groovy 环境
[作者:Surpassme] Groovy是基于JVM
的,所以安装Groovy,需要准备好JDK环境
。这里假设大家已经提前准备好JDK环境,仅讲述Groovy环境的准备。操作步骤如下所示:
- 1.访问Groovy 官网,下载基本的安装包https://groovy.apache.org/download.html
- 2.将下载的Groovy SDK包解压到指定目录,本机解压目录为
D:\Program Files\Groovy
- 3.设置环境,主要环境变量如下所示:
:: 新增以下环境变量
GROOVY_HOME="D:\Program Files\Groovy"
:: Path追加以下环境变量
%GROOVY_HOME%\bin
- 4.重新打开一个新的窗口,验证配置是否成功
C:\Users\Surpass>groovy -version
Groovy Version: 4.0.5 JVM: 17.0.1 Vendor: Oracle Corporation OS: Windows 10
- 若能正常输出版本信息,则代表安装成功。
- Jenkins 2.x 目前使用的Groovy 版本为2.x,基础的语法应该是一样的,大家可以根据自己的实际情况选择对应的版本学习
2.3 Groovy IDE
[作者:Surpassme] Groovy 支持的工具如下所示:
以下信息来自于Groovy 官网:http://groovy-lang.org/ides.html
除了以下的IDE工具,也可以使用自带的工具来进行简单的代码编写,如下所示:
- 使用Groovysh,按以下操作即可:
- 使用GroovyConsole,按以下操作即可:
2.4 Groovy 基础知识
2.4.1 注释
- 1.单行注释
[作者:Surpassme] 单行注释使用//
,示例如下所示:
// 单行注释示例
println "Hello,Surpass"
println "Hello,Surpass" // 单行注释示例
- 2.多行注释
[作者:Surpassme] 多行注释以/*
开始,以*/
结束。示例如下所示:
/* 多行注释示例
多行注释示例 */
println "Hello,Surpass" /* 多行注释示例
多行注释示例 */
println 1 /* one */ + 2 /* two*/
- 3.文档注释
[作者:Surpassme] 文档注释与多行注释非常像,主要区别是以/**
开始,以*/
结束,中间每一行以*
开头。示例如下所示:
/**
*文档注释
*/
class Person {
/** 姓名*/
String name="Surpass"
/**
* 创建一个吃东西的方法
*
* @param 食物的名称
* @return 喜欢吃的食物的消息
*/
String eat(String foodName){
return "Hello ${name},I like eat ${foodName}"
}
}
- 4. Shebang 行
[作者:Surpassme] 与Shell类似,有一单行注释比较特殊,称为为Shebang
,在Groovy脚本中,以#!
开始的行。示例如下所示:
#!/usr/bin/env groovy
println "Hello,Surpass"
2.4.2 关键字
[作者:Surpassme] Groovy 主要关键字如下所示:
abstract assert break case catch class
continue def default else finally for
if instanceof switch throw try while
class import package return in as
2.4.3 变量
2.4.3.1 变量命名
2.4.3.1.1 常规命名
[作者:Surpassme] 在Groovy中,变量命名通常遵循如下规则:
- 通常以
字母
、$
和下划线
开头,但不能以数字开头
以下为合法的变量命名:
def surpass
def surpass8
def _suprass
def $surpass
以下为非法的变更命名:
def 8surpass
def hello+surpass
def hello#surpass
2.4.3.1.2 引号命名
[作者:Surpassme] 引号命名通常出现.
表达式之后,通常应用在一些变量带有特殊字符的命名中。示例如下所示:
def map=[:]
def name="Surpass"
map."my name"="Surpass"
map.'my-name'="Surpass"
map."variable-name-${name}"="Hello ${name}"
assert map."my name"=="Surpass"
assert map.'my-name'=="Surpass"
assert map."variable-name-Surpass"=="Hello Surpass"
println "map is ${map}"
输出结果如下所示:
map is [my name:Surpass, my-name:Surpass, variable-name-Surpass:Hello Surpass]
2.4.3.2 变量赋值
[作者:Surpassme] 在Groovy中主要的变量赋值方式如下所示:
2.4.3.2.1 常规赋值
常规赋值,示例如下所示:
// 定义并赋值
def name="Surpass"
// 先定义再赋值
def age
age=28
println "name is ${name}\nage is ${age}"
2.4.3.2.2 多变量赋值
[作者:Surpassme] Groovy支持一次性给多个变量赋值,示例如下所示:
// 方式一
def (name,age,loc)=["Surpass",28,"Shanghai"]
println "name is ${name},age is ${age},loc is ${loc}" // name is Surpass,age is 28,loc is Shanghai
// 方式二
def hello="Hello,Surpass,Welcome to Shanghai"
def (_,name,welcome)=hello.split(",")
println "name is ${name},welocme is ${welcome}" // name is Surpass,welocme is Welcome to Shanghai
// 方式三
def (name,age)=["Surpass",28,"Shanghai","Wuhan"]
println "name is ${name},age is ${age}" // name is Surpass,age is 28
原文地址:https://www.jianshu.com/p/870a6921f7e3
本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注: