4

我在 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 个应用程序。我希望能够尽可能快地构建我目前正在开发的应用程序。

有没有办法忽略其他子项目,即使是评估阶段?或者是否有另一种方法来设置依赖于相同库但不相互依赖的多个项目?

4

1 回答 1

3

正如您所指出的,gradle 中的默认行为是评估所有项目。有计划(并且也开始了初步工作)在未来使其更加细化。现在,您可以查看孵化功能“按需配置”。也许这对你有帮助。查看http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:cross_project_configuration了解详情

干杯,

勒内

于 2013-10-09T08:22:47.790 回答