前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android Studio 中编辑Groovy 脚本 给钉钉机器人发消息

Android Studio 中编辑Groovy 脚本 给钉钉机器人发消息

作者头像
zinyan.com
发布2022-12-07 17:48:28
8360
发布2022-12-07 17:48:28
举报
文章被收录于专栏:zinyanzinyan

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 文件中添加:

代码语言:javascript
复制
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 ! 内容了。

代码语言:javascript
复制
> 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+"&timestamp="+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中配置脚本的方法吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 zinyan 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.介绍
  • 2. 开启Groovy
  • 3. 创建一个Groovy脚本给钉钉群里面发消息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档