Gradle实战读书笔记之四 多项目的构建

组装多项目构建

在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 = 
}
点赞