Jenkins实践指南-02-Groovy基础知识01

2. Groovy 基础知识

    因为pipeline是基于Groovy的,所以还是需要一些基础的Groovy知识的。

2.1 Groovy 简介

    Groovy 是Apache旗下的一门基于JVM平台的动态/敏捷编程语言。语法简洁灵活,开发效率也比较高,且能够与Java语言无缝对接,可以在写Groovy时语法按Java的语法继续写,也能在Java中调用Groovy脚本,均可以很好运行。

2.2 Groovy 环境

    Groovy是基于JVM的,所以安装Groovy,需要准备好JDK环境。这里假设大家已经提前准备好JDK环境,仅讲述Groovy环境的准备。操作步骤如下所示:

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

    Groovy 支持的工具如下所示:

0201 GroovyIDE.png

以下信息来自于Groovy 官网:http://groovy-lang.org/ides.html

    除了以下的IDE工具,也可以使用自带的工具来进行简单的代码编写,如下所示:

  • 使用Groovysh,按以下操作即可:
0202 Groovysh.png
  • 使用GroovyConsole,按以下操作即可:
0203 GroovyConsole.png

2.4 Groovy 基础知识

2.4.1 注释

  • 1.单行注释

    单行注释使用//,示例如下所示:

// 单行注释示例
println "Hello,Surpass"
println "Hello,Surpass"  // 单行注释示例
  • 2.多行注释

    多行注释以/*开始,以*/结束。示例如下所示:

/* 多行注释示例
   多行注释示例 */
println "Hello,Surpass" /* 多行注释示例
                       多行注释示例 */
println 1 /* one */ + 2 /* two*/
  • 3.文档注释

    文档注释与多行注释非常像,主要区别是以/**开始,以*/结束,中间每一行以*开头。示例如下所示:

/**
*文档注释
*/
class Person {
    /** 姓名*/
    String name="Surpass"
    /**
     * 创建一个吃东西的方法
     *
     * @param 食物的名称
     * @return 喜欢吃的食物的消息
     */
    String eat(String foodName){
        return "Hello ${name},I like eat ${foodName}"
    }
}
  • 4. Shebang 行

    与Shell类似,有一单行注释比较特殊,称为为Shebang,在Groovy脚本中,以#!开始的行。示例如下所示:

#!/usr/bin/env groovy

println "Hello,Surpass"

2.4.2 关键字

    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 常规命名

    在Groovy中,变量命名通常遵循如下规则:

  • 通常以字母$下划线开头,但不能以数字开头

    以下为合法的变量命名:

def surpass
def surpass8
def _suprass
def $surpass

    以下为非法的变更命名:

def 8surpass
def hello+surpass
def hello#surpass
2.4.3.1.2 引号命名

    引号命名通常出现.表达式之后,通常应用在一些变量带有特殊字符的命名中。示例如下所示:

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 变量赋值

    在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 多变量赋值

    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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容