前言
作为运行在jvm上的编程语言,groovy是最好的脚本之一,具有脚本该有的特性,还能无缝对接java。
安装
sdkman
curl -s https://get.sdkman.io | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk version
java
使用groovy推荐的java版本:安装groovy。
选择adoptopenjdk,其中hs表示HotSopt的JVM(cpu使用上更优),j9表示OpenJ9的JVM(内存使用上更优)。
sdk list java
sdk install java 8.0.252.hs-adpt
groovy
sdk install groovy
groovy -version
必要的时候建立软连接
有些工具,比如winscp的终端的$PATH不包含隐藏目录,需要建立软链接才能访问。
ln -s /root/.sdkman/candidates/groovy/current/bin/javac /usr/local/bin/groovy
ln -s /root/.sdkman/candidates/java/current/bin/javac /usr/local/bin/javac
基本语法
以下是groovy的基本语法,更多更全的请参考groovy语法。
定义变量
使用def关键字定义变量。
def val="abcdefgh"
定义函数
使用def关键字定义函数。
def func(x,y){return x+y}
定义List
使用[e1,e2,e3,…]来声明列表。
def list=[1,2,3,4,5,6]
定义Map
使用[k1:v1,k2:v2,k3:v3,…]声明字典。
def map=[name:"zlb",age:1,code:"java"]
命令行参数
args(命令行参数)
假设groovy文件是如下代码:
println args
执行命令:
groovy .\aa.groovy a b c
输出如下:
[a, b, c]
常用功能
以下是常用功能,更多功能请参见Groovy功能。
运行外部程序(部署时很好用)
作为脚本,执行一些外部命令时非常好用。
def p
p = "docker info".execute()
p.consumeProcessOutput(System.out, System.err)
p.waitFor()
p = "docker stack rm nginx".execute()
p.consumeProcessOutput(System.out, System.err)
p.waitFor()
//指定执行目录
p="docker build -f Dockerfile -t xxl.quilt --rm --no-cache .".execute(null, new File("/deploy/dockerfile/quilt"))
p.consumeProcessOutput(System.out, System.err)
p.waitFor()
一键提交git仓库
def p
println("add")
p = "git add .".execute()
p.consumeProcessOutput(System.out, System.err)
p.waitFor()
println("commit")
p = ("git commit -m " + (args.length > 0 ? args[0] : "自动提交")).execute()
p.consumeProcessOutput(System.out, System.err)
p.waitFor()
println("push")
p = "git push origin master".execute()
p.consumeProcessOutput(System.out, System.err)
p.waitFor()
println("finished")