跳到主要内容

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)