在使用maven的时候,compile/test/install的先后顺序和依赖关系都十分清晰,而在前面的例子中,可以通过gradle compile和gradle test来进行不同的任务执行,但是实际这些任务之间是有依赖关系的,就像我们在maven里面执行mvn install之前会做什么那样,这篇文章会继续来介绍task之间的依赖与执行条件。
这篇文章会通过对上文的例子进行重新改写,来介绍gradle对于task操作的依赖和执行条件,还是如下4个任务:
修改之前的代码示例如下所示,对前文中的task的<<使用方式进行了修改,以消除warning信息
前面准备的例子有一个主要的问题,task之间的依赖关系实际是没有的,上文显示的执行顺序实际是因为输入的顺序产生的,在gradle里面也非常容易地通过dependsOn进行依赖关系的设定,这里将常用的方式进行整理如下:
执行结果确认信息如下,可以看到test在执行时compile的任务被事先执行了
{}中设定的是任务的配置代码或者执行阶段代码的详细信息,在这里可以进行设定,比如:
执行结果确认信息如下,注意由于test任务依赖于compile,所以在执行packaging的时候,会同时执行:
当然也可以在{}进行指定,由于在{}之外,缺乏上下文,自然需要指定是谁依赖谁,而不是像前两种方式那样只需要设定依赖对象即可。
这样执行起来,依赖关系就完整了。
在前文介绍task常用属性和方法时,还提及到一个enable属性,这里通过示例来演示一下使用方式:
这样执行起来,由于enabled被设定为false,执行的过程则被跳过了
当然使用方式也有很多种,比如也可以使用packaging.enabled = false在{}外设定,这里就不再赘述了。
onlyIf属性进行条件判断,比如install任务根据packaging的enabled是否为true进行判断当前install任务是否执行的时候,即可加上如下设定即可
这样在执行的时候,packaging的enabled如果是false的话,install也不会执行了
由于演示enabled和onlyIf属性,代码略有变化,再次贴出如下:
使用gradle的dependsOn/enabled/onlyIf等特性,结合groovy语言进行简单编码,gradle能够实现非常灵活的用法,可以在具体项目中进行不断实践。
作者:liumiaocn 原文:https://blog.csdn.net/liumiaocn/article/details/84230280
代码人生,一飞冲天。
END