我在 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)
settings.gradle
在 /workspace/ 中看起来像这样:
include ':market_licensing:library'
include ':play_apk_expansion:downloader_library'
include ':myapp1:Android'
include ':myapp2:Android'
当我在其中一个应用程序目录中运行 gradle 构建时,它可以工作:例如,/workspace/myapp1/Android>gradle clean
运行良好。
但是,这也将评估 build.gradle 项目myapp2
。
根据 Gradle 手册,这是预期的。在http://www.gradle.org/docs/current/userguide/multi_project_builds.html中,部分56.3. Execution rules for multi-project builds
内容是“Gradle 总是评估多项目构建的每个项目并创建所有现有的任务对象。”。
我的问题是这会不必要地减慢我的构建速度。不必要的,因为当我在构建时myapp1
,我不在乎myapp2
。我希望图书馆处于良好状态,但我不在乎myapp2
. 这对于 2 个应用程序来说并不可怕,但想象一下拥有 20 个应用程序。我希望能够尽可能快地构建我目前正在开发的应用程序。
有没有办法忽略其他子项目,即使是评估阶段?或者是否有另一种方法来设置依赖于相同库但不相互依赖的多个项目?