多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## Behaviour 之前在学习的时候说到了可以给任务添加行为behaviour,看一下下面的例子: ~~~ task hello << { println 'Hello Earth' } hello.doFirst { println 'Hello Venus' } hello << { println 'Hello Jupiter' } hello.doLast { println 'Hello Mars' } ~~~ 输出如下: ~~~ D:\gradle_product\0123>gradle -q hello Hello Venus Hello Earth Hello Jupiter Hello Mars ~~~ doFirst和doLast这些标识就是行为,代表你所定义的hello任务的一些附加行为,不同等级的行为,跟你在build.gradle中定义的顺序是没关系的,但是同一等级的就有关系,谁先定义的,就会先执行那一部分。 ## 不同等级 比如我们将doFirst和doLast的位置调换,看执行的顺序: ~~~ task hello << { println 'Hello Earth' } hello << { println 'Hello Jupiter' } hello.doLast { println 'Hello Mars' } hello.doFirst { println 'Hello Venus' } ~~~ 输出: ~~~ D:\gradle_product\0123>gradle -q hello Hello Venus Hello Earth Hello Jupiter Hello Mars ~~~ 经过实际验证,输出是没有变化的。 ## 相同等级 比如hello.doLast和hello<<所定义的行为属于相同等级,都是在hello任务执行完再执行。这个时候的执行顺序是跟你定义的顺序是有关系的,比如我们将上面的hello<<移到doLast后面 ~~~ task hello << { println 'Hello Earth' } hello.doLast { println 'Hello Mars' } hello << { println 'Hello Jupiter' } hello.doFirst { println 'Hello Venus' } ~~~ 输出: ~~~ D:\gradle_product\0123>gradle -q hello Hello Venus Hello Earth Hello Mars Hello Jupiter ~~~