在gradle中一个任务一般都是由多个子任务组成,各个子任务之间存在依赖关系,gradle会按我们预定的依赖关系去选择合适的顺序去执行各个子任务,最终保证任务的正确执行。在使用gradle构建工程的时候,有时我们需要去看某个任务由哪些子任务组成,各个子任务之间存在着什么样的依赖关系。这时可以选择使用下面的命令去执行需要查看的任务,该命令只会按正确的顺序列出所有的子任务而不会去真正执行

    ./gradlew 任务名字 –dry-run(或 -m)

    运行./gradlew -h可以看到官方的使用说明

    -m, –dry-run Run the builds with all task actions disabled.

    我在最初使用gradle的时候不知道Android中的build、assemble、assembleDebug 、assembleRelease等任务的区别。这时就可以使用上面说到的方法,运行./gradlew build –dry-run,列出所有子任务,可以看到所有子任务都是被跳过的,并不会真正执行。

    1. :app:preBuild SKIPPED
    2. :app:preDebugBuild SKIPPED
    3. :app:compileDebugAidl SKIPPED
    4. :app:compileDebugRenderscript SKIPPED
    5. :app:checkDebugManifest SKIPPED
    6. .......................................
    7. :app:preReleaseUnitTestBuild SKIPPED
    8. :app:javaPreCompileReleaseUnitTest SKIPPED
    9. :app:compileReleaseUnitTestJavaWithJavac SKIPPED
    10. :app:processReleaseUnitTestJavaRes SKIPPED
    11. :app:testReleaseUnitTest SKIPPED
    12. :app:test SKIPPED
    13. :app:check SKIPPED
    14. :app:build SKIPPED

    通过对比对列出来的子任务最后发现以下关系:
    build = assemble + lint + test相关
    assemble = assembleDebug + assembleRelease