第五讲 任务依赖关系和排序

一、前言:

既然我们可以声明任务了,那么我们应该思考任务之间的依赖关系了。例如,我们不能再编译源码之前保存我们的Jar库。我们通过任务依赖性和顺序性对任务之间的关系进行建模。

我们会讨论三种方式去配置任务之间关系:

dependsOn”,”finalizedBy”,和”mustRunAfter”。

二、三种方式:

第一种:dependOn

task A dependOn task B,如果在任务B未完成的情况下,任务A无法进行其工作,换句话说任务A依赖于任务B。我们举一个熟悉的例子,你早晨起床的时候,如果你不首先穿袜子的话是不能穿鞋的。下面我们看具体的例子:

具体代码:


运行结果:

在穿鞋的任务里我们仅仅传递了穿袜子任务的名字。下面我们使用静默的方式运行一下穿鞋的任务,这样的话我们就不会看到那些诊断输出了。在这里我们使用指令“gradle qputonShoes”下面我们查看一下运行结果:

注意:如果此时使用命令“gradle tasks”,在控制台上不能看到“putOnSocks”。因为Gradle假定“putOnSocks”任务存在是为了帮助完成“putOnShoes”的。同时可以使用“gradletasks -all”查看“outOnSocks”任务。

第二种:finalizedBy

task  A finalizedBy task B,就是说每一次task  A运行,task B都会紧随其后运行。继续我们的例子,每一次你吃早餐,你需要紧随其后进行刷牙。我们来看一下具体例子:

具体代码:

因此我们看一下在试图告诉gradle吃早餐的时候,会发生什么:

第三种:mustRunAfter

mustRunAfter的使用例子不太明显,假设我们有一个长期运行的过程该过程不可能失败。如向一个持续集成的服务器部署工具,我们还有一个短期运行的任务,该任务很可能会失败,比如运行单元测试。这两个任务没有相互依赖关系,但是如果我们将两个任务同时进行,我们真的希望在综合测试前进行单元测试。

继续进行我们日常生活中的例子。我们继续洗澡,并喷洒一种像香水或者古龙水的香味。喷洒香味不需要洗澡,洗澡也不需要喷洒香味。但是我们既要洗澡也要喷洒香味我们真的应该先洗澡。我们来看一下具体的例子:

具体代码:

现在如果我们让Gradle喷洒香味,并洗澡吧:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心灵行者

你的鼓励是我最大的创作动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值