关于android:多项目Gradle项目中的任务取决于多个子项目Gradle插件任务

Task in a Multiproject Gradle Project that Depends on Multiple Subproject Gradle Plugin Tasks

我正在开发一个大型构建系统,我有以下任务:

1
2
3
4
5
6
7
8
9
10
11
:runTests

:moduleA:installDebug
:moduleA:installTest

:moduleB:installDebug
:moduleB:installTest

:moduleA:uninstallAll

:moduleB:uninstallAll

使用项目/构建结构:

1
2
3
4
5
6
7
8
9
build.gradle
settings.gradle
   |
   - moduleA
        |
        - build.gradle
   |
   - moduleB
        - build.gradle

uninstallAll和install任务由Gradle android插件创建。

我希望:runTests是一个Exec类型的Gradle任务,它依赖于按此顺序执行的:moduleA:uninstallAll:moduleB:uninstallAllmoduleA:installDebugmoduleA:installTest

我试图通过在顶级build.gradle文件中使用subproject闭包来配置它,以创建单个runTests Exec命令,然后使用dependsOn指定应首先完成卸载和安装任务。

但是,这种方法似乎不起作用。 无法找到插件创建的任务(即使它们以gradlew tasks --all列出),或者完全忽略了由任务运行的buildscript。

创建这种依赖链的最佳实践是什么?


据我所知,Android插件在游戏中很晚才创建任务,因此您可能需要将逻辑包装在gradle.projectsEvaluated { ... }中。