Android杂谈:Gradle原子操作Task

Task是Gradle编译的基础,每个编译任务就是一个Task。例如编译一个jar包,一个可执行文件等等。本文主要是描述在命令行下执行gradle命令的。只要你装了Android studio,你应该就有gradle了。

配置命令行gradle###

gradle的可执行文件位于Androi studio的安装目录下的gradle\gradle-x.x\bin下面,把这个路径配到环境变量中,就可以在cmd直接调用gradle了。

《Android杂谈:Gradle原子操作Task》 gradle路径.png

在命令行输入gradle,显示如下,说明配置好命令行了,可以开心玩耍了。

《Android杂谈:Gradle原子操作Task》 命令行.png

最简单的gradle Task##

新建一个build.gradle文件,输入下面内容,然后保存。

task hello { 
  doLast { 
      println 'Hello, World!'
  }
}

在命令行输入gradle tasks开始执行,就可以看到我们的输入罗。但除了看到我们的hello task外。还有两个task,Build Setup Tasks,Help Tasks。这两个Task就是gradle环境准备的一些Task啦。不用管它。

《Android杂谈:Gradle原子操作Task》 gradle tasks.png

如果我们要单独运行我们的hello task的话,命令行输入gradle hello就行了

《Android杂谈:Gradle原子操作Task》 单独运行task.png

给Task分组###

有时我们有很多Task,想给他分个组。例如上面提到的Build Setup Tasks,Help Tasks就是两个Task组。我们上面新建的hello属于Other tasks分组,因为我们没有指定hello的分组,他就会默认去到Other tasks分组中去。其实我们可以指定task的分组。见下面的脚本。下面的脚本就描述了hello属于Welcome分组,分组的描述是Produces a greeting。

task hello {
  group 'Welcome'
  description 'Produces a greeting'

  doLast {
      println 'Hello, World'
  }
}

在命令行运行gradle tasks看看,可以看到分组和描述都打印出来了。

《Android杂谈:Gradle原子操作Task》 分组与描述

自定义Task类###

默认的task都是继承与DefaultTask的,所以我们要自定义Task时,要新建一个类继承与 DefaultTask,见下面脚本。自定义了一个Task类Greeting,里面有一个方法sayGreeting(),加了注解@TaskAction后会自动执行这个函数。

class Greeting extends DefaultTask {   
    String message 
    String recipient

    @TaskAction 
    void sayGreeting() {
        println "${message}, ${recipient}!" 
    }
}

task hello ( type : Greeting ) { 
    group 'Welcome'
    description 'Produces a world greeting'
    message 'Hello' 
    recipient 'World'
}

运行结果

《Android杂谈:Gradle原子操作Task》 自定义Task类.png

参考:
https://guides.gradle.org/writing-gradle-tasks/
Writing Custom Gradle Tasks

    原文作者:九九叔
    原文地址: https://www.jianshu.com/p/41484750cb7a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞