1.介绍
最近有一些需求,需要学习和配置Groovy脚本。而电脑上安装的编译器Android Studio。
同时,我们Studio会默认安装一个Groovy的插件。(我们可以通过Settings -> Plugins -> Groovy 找到)。
那么,也就是说Android Studio是默认就支持编辑Groovy的。
其实我们配置的build.gradle中的脚本就是groovy的。所以Studio一直都支持。
下面就来介绍,如何通过Android Studio 写Groovy脚本。
2. 开启Groovy
我们通过New Module
创建一个 Java or Kotlin Library
的项目。其他的参数可以不进行修改。保持默认没有任何关系。
创建完毕后,在新的Library项目的build.gradle
文件中添加:
plugins {
id 'java-library'
id 'groovy' //添加这个配置
}
dependencies {
implementation(localGroovy())
}
我们如果想给groovy项目指定依赖JDK版本 可以配置如下(例如我配置为jdk1.8):
代码语言:javascript复制plugins {
id 'java-library'
id 'groovy'
}
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
dependencies {
implementation(localGroovy())
}
然后我们需要在main文件夹中,创建groovy文件夹。这个文件夹需要我们手动创建。
在main文件夹中右击。选择New -> Directory
我们可以主动输入groovy进行创建。也可以在Gradle Source Sets 栏里面选择groovy文件夹(如果没有,你就自己创建吧)。
创建完毕后,我们就可以在src/main/groovy
目录下写我们的groovy脚本了。编译器会帮我们进行格式构造。
同时各种提示就和写java代码一样。
3. 创建一个Groovy脚本给钉钉群里面发消息
我们在groovy目录中,右击新建一个普通文件,然后输入: Zinyan.groovy
注意了,后缀名必须输入groovy才能创建成功哦。
创建完毕后:
代码语言:javascript复制class Zinyan {
// Groovy 中的 main 函数
def static main(def args) {
// 在 Groovy 中可以使用 Java 语法
System.out.println("Hello Zinyan Groovy !")
}
}
我们就可以通过编译器main函数左侧的运行按钮,进行运行编译操作了。
执行完毕,就会在Build 面版上打印 :Hello Zinyan Groovy !
内容了。
> Task :TestLib:Zinyan.main()
Hello Zinyan Groovy !
BUILD SUCCESSFUL in 6s
3 actionable tasks: 3 executed
下面介绍如何通过Groovy配置脚本,给钉钉群里面发消息。
代码语言:javascript复制import groovy.json.JsonBuilder
import groovy.json.JsonSlurper
import javax.crypto.Mac
import javax.crypto.spec.SecretKeySpec
class Zinyan {
// Groovy 中的 main 函数
def static main(def args) {
// 在 Groovy 中可以使用 Java 语法
Zinyan zinyan = new Zinyan()
System.out.println("Hello Zinyan Groovy !")
zinyan.dingdingTask("测试构建工具","##这个是标题内容哦","[这个地方填写我们的WebHook]",
"这个地方填写加签的秘钥")
}
//发送钉钉任务 ,第一个为钉钉消息,第二个参数为 消息内容主体
def dingdingTask( mk_title, mk_test, webhook, secret){
def json = new JsonBuilder()
json{
msgtype "markdown"
markdown {
title mk_title
text mk_test
}
at {
atMobiles([])
isAtAll false
}
}
//消息准备完毕,执行发送请求
String timestamp =System.currentTimeMillis() "" //得到系统时间
def sign = getSign(timestamp,secret)
def url =webhook "&sign=" sign "×tamp=" timestamp
def connection = new URL(url).openConnection()
connection.setRequestMethod('POST')
connection.doOutput = true
connection.setRequestProperty('Content-Type', 'application/json')
def writer = new OutputStreamWriter(connection.outputStream)
writer.write(json.toString())
writer.flush()
writer.close()
connection.connect()
JsonSlurper slurper = new JsonSlurper()
def sl = slurper.parseText(connection.content.text)
System.out.println("钉钉服务器返回结果:" sl)
System.out.println("返回的结果代码:" sl.errcode)
}
def getSign(timestamp,secret){
def stringToSign = timestamp "n" secret
Mac mac = Mac.getInstance("HmacSHA256")
mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"))
byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"))
return URLEncoder.encode(new String( Base64.encoder.encode(signData)),"UTF-8")
}
}
注意:
要填写你自己的 webHook和 签名,填完完毕后执行成功就会得到下面的效果:
代码语言:javascript复制> Task :TestLib:Zinyan.main()
Hello Zinyan Groovy !
钉钉服务器返回结果:[errcode:0, errmsg:ok]
返回的结果代码:0
同时我们的钉钉消息上就看到输出结果了。
Groovy的脚本是可以直接配置到Jenkins工具中的哦。 后面介绍一个如何在Jenkins中配置脚本的方法吧。