Gradle自定义一个task

作者: 紫苓 | 来源:发表于2016-06-23 11:45 被阅读3288次

0、关于定义一个task的方式,可以参考gradle文档14章和17章

1、根据官方描述,总共有三种方式自定义一个task

1.1 task直接写在build.gradle文件中,这个比较简单,这里不介绍
1.2 task写在buildSrc项目中,操作步骤如下:

** 1.2.1 创建项目结构 **

在项目的根目录下面新建一个文件夹,名为buildSrc,然后依次新建子目录
src/main/groovy,然后可以建自己的包名,这里以demo.gradle.task为例,依次新建
子目录demo/gradle/task,然后在buildSrc根目录下面新建build.gradle文件,里面写入:

apply plugin: 'groovy'

dependencies {
   compile gradleApi()
   compile localGroovy()
}

最终目录结构如下:

QQ截图20160623110839.png

编译之后变成下面的样式:

QQ截图20160623111254.png

** 1.2.2 编写task**
在demo.gradle.task包中,新建一个task类,名为HelloGradleTask.groovy,
注意在sayHello方法上的那个@TaskAction注解的作用。

package demo.gradle.task

import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction

class HelloGradleTask extends DefaultTask{

    @TaskAction // 加上这个action的作用是当执行这个task的时候会自动执行这个方法
    void sayHello(){
        println "Hello Gradle Custom Task"
    }

}

** 1.2.3 使用task**
在项目中的build.gradle中添加如下脚本:

task myCustomTask(type : demo.gradle.task.HelloGradleTask){
    println("########## custom task ###########")
}

重新编译项目,在项目下面就会多了一个名为myCustomTask的task,执行task,
会打印########## custom task ###########和"Hello Gradle Custom Task"
两句话。

1.3 作为一个独立项目建立task,这个官方文档有详细文档,这里不介绍了。

以上,为自定义task的所有方式。总的来说,如果只是自己项目中要使用,
第一二钟方式就满足了,然后根据task的复杂度来选择使用哪种方式。

相关文章

  • Gradle 自定义Task

    Gradle 自定义Task 自定义task 实现自动化系统签名,push安装,重启设备等操作 Task 实现 a...

  • 如何5分钟让你的 SDK 拥有热修复能力(原理篇)

    前言 看完本文可以达到什么程度 自顶向下分析 学会 hook task 学会自定义 task,自定义 gradle...

  • Gradle自定义插件

    1、自定义插件的方式 类似于自定义task,gradle自定义插件的方式也是三种,而且步骤和自定义task基本类似...

  • Gradle相关内容

    form: Gradle学习系列 扩展task属性/自定义task属性 使用DAG(有向非循环图)进行配置 gra...

  • Gradle学习

    Gradle基础 1、Task 在Gradle中一个原子性的操作叫做task,可以简单理解为task是Gradle...

  • Gradle —— 自定义 Plugin(1)

    自定义 Plugin 可以向任意一个 Gradle 类进行操作。比如向 Project 添加 Task、Confi...

  • Gradle快速入门

    Gradle快速入门创建Task的多种方法读懂Gradle语法增量式构建自定义Property使用java Plu...

  • 最近需要做的事

    技术上 学习tinker(使用+ 源码 + 自定义task) Gradle transform api使用 Gra...

  • gradle task 调用另外的 task

    需求 想在 gradle 的 某一个task里面 调用另外的 task 【gradle版本】4.9 solutio...

  • Gradle:Task # finalizedBy()

    Gradle:Task # finalizedBy() 这篇文章对Gradle的Task对象的finalizedB...

网友评论

    本文标题:Gradle自定义一个task

    本文链接:https://www.haomeiwen.com/subject/hdwndttx.html