组装多项目构建
在Android开发中,一般一个project下面,可由一个主程序,与多个 module组成;这就是多项目;
运行gradle projects
可查看参与构建的所有项目
settings.gradle 文件
位于根项目的目录,根项目表示位于顶级目录中的总体项目;settings.gradle内容如下:
include ':app', ':common', ':home'
如上settings文件,我们包含一个根项目和3个子项目的多模块构建;
settings API 表示
在Gradle组装构建之前,会创建一个Settings类型的实例;Settings接口是settings文件的直接表示;settings 在初始化阶段执行;
定义特定的任务:
如,通过project 方法给子项目定义配重块,实际配置内容在闭包中,如:
project(':common') {
group = "comom.better"
version = '1.0.0'
apply plugin: 'com.android.library'
dependencies { // 可以在这里指定依赖,但还是在模块中的gradle文件指定好
}
}
为指定模块执行任务
通过冒号(:) +模块名来指定,如 执行 build 任务:
gradle :common:build
在项目执行 build任务的时候,gradle通过依赖,来确认每个一个module的执行属性,如A模块依赖B,则B会在A之前构建;
多项目部分构建
如果有好多个子项目的复杂多项目构建,将大大影响平均执行时间;gradle会遍历所有的项目依赖并确保它们是最新的;
在开发阶段,开发者知道哪些项目有了变动,构建时,不需要重新构建没有发生变化的子项目;针对这个情况,gradle提供部分构建特性;
部分构建通过命令行选项-a
或 --no-rebuild
启用;
假设只在项目 :common 改变了代码,但不想重新构建子项目 :home,这就可以使用部分构建,省去检查home项目的构建成本,降低构建时间;
定义公共行为
通过 allprojects和subprojects方法来定义公共行为;
使用 allprojects方法来设置根项目和子项目的 group和version属性;
使用subprojects方法将插件应用于所有的子项目;
用来减少重复的代码,利于清晰;
如下代码:
allprojects {
repositories {
jcenter()
}
// 为根项目和所有子项目设置group和version属性
group = 'com.better'
verison = '1.0.0'
}
subprojects { // 设置插件应用于子项目
// apply plugin :
}
独立的项目文件
每个项目都有一个 build.gradle文件,在android 中,就是每个module有其对应的build.gradle文件;但是在集成开发环境中,每个module的gralde文件,都是相同的,在多个文件中编辑代码,很容易混淆;
我们肯定是可以自定义其 build 文件名称的,使用 Settings API;
在settings.gradle文件中
rootProject.children.each {
it.buildFileName =
}