第十八天:客制化 Gradle Task

虽然 Gradle 内建不少任务,也有众多 Plugin 可以增加更多常用任务。但毕竟每个专案都是独一无二的,情境和需求也都不同,因此往往会需要在 Gradle 里写一些客制化的 Task。今天就要跟大家谈谈如何写 Custom Gradle Task。

在 Gradle Script 里建立客制化任务

在 Gradle 建立客制化任务最简单的方式,就是直接把 Task 动作写在 Gradle Build Script 里,也就是 build.gradle.kts 里。我们先试着定义一个 Task,然後单纯地印一些字串在画面上:

task welcome {
    doLast {
        println("Hello, task!")
    }
}

在这边我们定义了一个名为 welcome 的任务,执行後会把 Hello, task! 的字样输出在终端机画面上。我们可以先用之前学过的 tasks --all 指令来检查这个指令是不是已经成功被挂载到 Gradle 里:

$ ./gradlew tasks --all
Other tasks
-----------
welcome

接着来执行一次指令测试看输出行为:

$ ./gradlew welcome
Hello, task!

小结

其实在各种专案里都会有像这样写一些脚本的需求,最简单的方式就是用 Bash 来写,或是有些开发者惯用 Make 来做。而在各个程序语言生态系里,把自动化动作写在建置工具也是很常见的作法。比方说在 PHP 生态系里,会用 Composer Script 的方式实作、在 Javascript 生态系里,会用 Npm Script 的方式实作。而以 JVM 生态系来说,写在 Gradle Task 里也是刚好而已。其实网路上针对客制化 Gradle Task 的教学不少,但大多数的示范程序码都是用 Groovy 写的,对於 Kotlin 开发者来说有些门槛。希望透过今天的教学,能增进大家对 Gradle Task 的了解,未来就可以依照自己的需求撰写客制化 Gradle 脚本来解决日常任务。

参考资料


<<:  [Day 8]开赛八天即遭遇难题(後端篇)

>>:  第四章之三

在 Fedora 34 上安装 VirtualBox 6.1.26

我整理一下自己的安装步骤如下: 一、升级 Kernel sudo -i dnf check-upd...

[Day16] JavaScript - Promise 物件

我们过去在写 JavaScript 使用的同步延迟,通常都是用非同步的 setTimeout 加 ...

mostly:functional 第二十九章:Monad 的法则

梅贾德斯不是照人类传统的时间来记戴,而是着眼在一个世纪发生的生活故事,一切同时存在於一瞬间。 --...

Day 28 Heroku Docker

跑范例环节 https://devcenter.heroku.com/articles/contai...

Day 30 - Finite State Machine x XState 推荐学习资源

说到学习资源,最容易学习的方式就是从母语开始 中文文章 Jerry Hong 的部落格 Jerry ...