我在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'
当我在其中一个app目录中运行gradle构建时,它可以正常工作:
例如,/workspace/myapp1/Android>gradle clean
运行正常。
但是,这将评估myapp2
的build.gradle项目。
根据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个应用程序。我希望能够尽快构建我正在开发的应用程序。
有没有办法忽略其他子项目,即使是评估阶段? 或者是否有另一种方法来设置依赖于相同库但不依赖于彼此的多个项目?
答案 0 :(得分:3)
正如您所指出的那样,gradle中的默认行为是评估所有项目。有计划(以及最初的工作开始),以使未来更细粒度。现在您可以查看孵化功能“按需配置”。也许这有助于你。有关详细信息,请查看http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:cross_project_configuration
欢呼声,
勒