(三) Build Task(构建任务)

来源:互联网 发布:在淘宝怎么开店啊 编辑:程序博客网 时间:2024/06/08 19:46

General Tasks(通用任务)

添加一个插件到构建文件中将会自动创建一系列构建任务(build tasks)去执行(注:gradle属于任务驱动型构建工具,它的构建过程是基于Task的)。Java plugin和Android plugin都会创建以下task:

  • assemble 这个task将会组合项目的所有输出。

  • check 这个task将会执行所有检查。

  • build 这个task将会执行assemble和check两个task的所有工作

  • clean 这个task将会清空项目的输出。

实际上assemblecheckbuild这三个task不做任何事情。它们只是一个Task标志,用来告诉android plugin添加实际需要执行的task去完成这些工作。

这就允许你去调用相同的task,而不需要考虑当前是什么类型的项目,或者当前项目添加了什么plugin。 例如,添加了findbugs plugin将会创建一个新的task并且让check task依赖于这个新的task。当check task被调用的时候,这个新的task将会先被调用。

在命令行环境中,你可以执行以下命令来获取更多高级别的task:

gradle tasks

查看所有task列表和它们之间的依赖关系可以执行以下命令:

gradle tasks --all

注意:Gradle会自动监视一个task声明的所有输入和输出。 两次执行build task并且期间项目没有任何改动,gradle将会使用UP-TO-DATE通知所有task。这意味着第二次build执行的时候不会请求任何task执行。这允许task之间互相依赖,而不会导致不需要的构建请求被执行


Java project tasks(Java项目的Task)

Java plugin主要创建了两个task,依赖于main task(一个标识性的task):

  • assemble
    • jar 这个task创建所有输出
  • check
    • test 这个task执行所有的测试。

jar task自身直接或者间接依赖于其他task:classes task将会被调用于编译java源码。 testClasses task用于编译测试,但是它很少被调用,因为test task依赖于它(类似于classes task)。

通常情况下,你只需要调用到assemblecheck,不需要其他task。

你可以在Gradle文档中查看java plugin的全部task。

Android tasks

Android plugin使用相同的约定以兼容其他插件,并且附加了自己的标识性task,包括:

  • assemble 这个task用于组合项目中的所有输出。
  • check 这个task用于执行所有检查。
  • connectedCheck 这个task将会在一个指定的设备或者模拟器上执行检查,它们可以同时在所有连接的设备上执行。
  • deviceCheck 通过APIs连接远程设备来执行检查,这是在CL服务器上使用的。
  • build 这个task执行assemble和check的所有工作。
  • clean 这个task清空项目的所有输出。

这些新的标识性task是必须的,以保证能够在没有设备连接的情况下执行定期检查。 注意build task不依赖于deviceCheck或者connectedCheck

一个Android项目至少拥有两个输出:debug APK(调试版APK)和release APK(发布版APK)。每一个输出都拥有自己的标识性task以便能够单独构建它们。

  • assemble
    • assembleDebug
    • assembleRelease

它们都依赖于其它一些tasks以完成构建一个APK需要多个步骤。其中assemble task依赖于这两个task,所以执行assemble将会同时构建出两个APK。


小提示:gradle在命令行终端上支持骆驼命名法的task简称,例如,执行

  gradle aR

命令等同于执行

  gradle assembleRelease。

check task也拥有自己的依赖:

  • check
    • lint
  • connectedCheck
    • connectedAndroidTest
    • connectedUiAutomatorTest(目前还没有应用到)
  • deviceCheck
    • 这个test依赖于test创建时,其它实现测试扩展点的插件。

最后,只要task能够被安装(那些要求签名的task),android plugin就会为所有构建类型(debugreleasetest)安装或者卸载。



0 0
原创粉丝点击