第四讲 任务配置

来源:互联网 发布:淘宝友情链接 编辑:程序博客网 时间:2024/06/05 00:31

任务配置

一、前言:

         现在我们已经掌握了Groovy,能更好地了解Gradle构建脚本内发生的情况,就像闭包可以具有委托对象一样,整个构建脚本也会委托给一个项目对象。Gradle DSL 中所有关键字都是该项目对象的属性或其中的方法。

       例如该项目对象的一个方法叫做 task fordeclaring tasks.它接受新任务和可选配置闭包的名称,我们稍后再介绍配置闭包。

二、内容:

1)如果使用指令“gradle tasks--all” 运行Gradle任务来查看当前定义的所有任务:


运行结果为:


我们会看到会在其他任务下方看到我们刚刚定义的任务1.

2)

由于整个构建脚本都委托给了项目对象,因此我们实际上可以继续,并在声明任务时中途停止。

代码如下:


另外由于Groovy语法非常强大,我们可以去除圆括号

代码如下:


下一部分会比较困难,Gradle其实会进入Groovy的执行模型并使用一种叫做抽象语法树转换的高级Groovy功能,该功能也允许你去除引号,大家不需要对此功能有深刻的理解。

代码如下:


最后看一下运行结果:


现在我们已经声明了一个任务,我们也可以配置一些属性。所以我们可以为“myTask4”提供一个说明,并为其提供一个组;

代码如下:


运行结果:


任务(task)最重要的属性是它将执行的操作的列表相对于直接设置操作属性我们会在要执行的的操作列表的末尾添加一个闭包。在这里我们使用doLast方法在list尾部添加一个闭包。

代码如下:


运行结果如下:


在列表开头添加任务(actions),使用doFirst方法。

代码如下:


其他方法向任务执行列表添加闭包:


运行结果如图:


“leftShift”方法功能和“doLast”功能相同

我们还可以声明一个任务,然后立即向其传递一个闭包作为操作,这是一种极其常见的模式:


代码为:


运行结果:


这是用户声明简单Gradle任务的最常见方法。

相对于之前“myTask4”进行逐行配置任务,我们可以在配置任务的时候配置闭包,配置闭包委托给任务对象,所以可以继续设置任务的说明,分组和操作。

代码内容如下:


运行结果:


下面会有一点难以理解,先看代码:


对比“myTask6”我们看可以看出实现方式有些区别,在该任务中我们尝试对分组(group)使用等号进行赋值,其实Gradle是使用了一种非常聪明的方式,它使用完全相同的名称为每个属性创建一个设置程序,所以在myTask6中的说明(description)可以看成是忽略括号的函数调用;在该任务中,分组中赋值也能正常运行。

注意如果你要将集合赋予配置闭包中的某个属性需要使用等号;

在任务方面还需要了解一点某些任务属性可以在任务声明中设置,但是并非所有的属性都能这么设置,想了解更多请查看:

https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/TaskContainer.html#create(java.util.Map)

代码如下:


运行结果:


只有当声明类型化语言任务时才需要使用此语法。

0 0
原创粉丝点击