我在 Gradle 中有以下多项目设置,用于构建多个使用几个库的 Android 应用程序:
假设我的根目录是 /workspace
目录结构如下(不完整):
/workspace/ --> root dir for the gradle build
/workspace/settings.gradle
...
/workspace/myapp1/Android/ --> contains the 1st app (has a build.gradle)
/workspace/myapp2/Android/ --> contains the 2nd app (has a build.gradle)
...
/market_licensing/library/ ---> contains a lib (has a build.gradle)
/play_apk_expansion/downloader_library/ ---> another lib (has a build.gradle)
/workspace/中的 settings.gradle
如下所示:
include ':market_licensing:library'
include ':play_apk_expansion:downloader_library'
include ':myapp1:Android'
include ':myapp2:Android'
当我在其中一个应用程序目录中运行 gradle build 时,它起作用了:
例如,/workspace/myapp1/Android>gradle clean
运行良好。
但是,这也会评估 myapp2
的 build.gradle 项目。
根据 Gradle 手册,这是预期的。在 http://www.gradle.org/docs/current/userguide/multi_project_builds.html ,部分 56.3。多项目构建的执行规则
它说“Gradle 总是评估多项目构建的每个项目并创建所有现有的任务对象。”。
我的问题是这会不必要地减慢我的构建速度。不必要的,因为当我构建 myapp1
时,我不关心 myapp2
。我希望库处于良好状态,但我不关心 myapp2
。这对于 2 个应用程序来说并不可怕,但想象一下有 20 个应用程序。我希望能够尽快构建我当前正在开发的应用程序。
有没有办法忽略其他子项目,即使是在评估阶段? 或者是否有另一种方法来设置依赖于相同库但不相互依赖的多个项目?
最佳答案
正如您所指出的,gradle 中的默认行为是评估所有项目。有计划(并且还开始了初步工作)在未来使它更细粒度。现在您可以检查孵化功能“按需配置”。也许这对你有帮助。看看http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:cross_project_configuration详情
干杯,
雷内
关于android - 在多项目设置中,Gradle 评估每个子项目。我可以忽略一些子项目吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19256713/