gradle - 使用介绍(二)

一、gradle任务执行

每一次Gradle执行一个build脚本,都会经历三个生命阶段

  • initialization(初始化期)
  • configuration(配置期)
  • execution(执行期)

构建工作会依照它们的依赖关系在执行阶段按序执行。

任务对象(task object)会在配置阶段汇集到一个内部的对象模型当中,这个对象模型就是DAG(无环有向图)。

而Gradle在初始化阶段会决定将那些工程加入构建当中去,这个对于多工程(mutilproject)构建很重要。

二、任务定义和配置块

task hello
hello << {
    println 'hello world'
}

hello.doLast {
    println 'hello world'
}
hello {
    println 'configuration block'
}

明确几个概念:

1) << 后面的{}和其中的内容被称为block(块)

2) 每一个task都是一个对象

3) 直接跟在task后面的块就是配置块(configuration block)

左移符号”<<”在这里的作用是将后面的代码块附加到hello对象的Actions列表中,action就是要执行的代码。该符号的作用和hello.doLast的是相同的。

既然task是对象,就有相对应的方法:

doLast()在这里是一个函数,那么gradle中如何调用任务对象的函数呢?
这里有两种方式:
1) taskObj.doLast {}
2) taskObj {
       doLast{}
   }
第一种形式很简单,不多说;
第二种形式的调用,是将doLast函数放到了Configuration Block当中。

这样的形式和taskObj.doList{}以及taskObj<<{}的作用是相同的,也就是说在build.gradle文件中定义

task hello
hello <<  {
    println 'load test data'
}

hello {
    doLast {
        println 'doLast: drop the database '
    }

    println 'configuration: open the connection'
}

hello << {
    println 'colse the database'
}

hello.doFirst {
    println 'doFirst: create the database'
}
脚本执行的结果是

配置块都是先于任务(:hello)执行的,但是定义在Configuration Block的doLast和hello << {}以及 hello.doLast{}方法执行优先级相同。

而另一个与之相对的函数doFirst的用法类似。

1) taskObj.doFirst{}
2) taskObj{
       doFirst{}
   }

task hello
hello.doFirst {
    println 'doFirst later'
}

hello {
    doFirst {
        println 'doFirst (configuration)'
    }
    println 'configuration'
}

hello.doFirst {
    println 'doFirst early'
}

脚本的执行结果


所以说不论是上述何种调用方式,doFirst方法都具有累加效应,先写后执行。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值