# 任务

  • 了解 Settings 类作用于 Gradle 构建的哪个阶段?
  • 了解 Settings 类与 settings.gradle 的关系
  • 了解和使用 inlcude 方法
  • hook 初始化阶段的监听器
  • 总结

# Settings 类作用于 Gradle 构建的哪个阶段?

前面介绍过,Gradle 构建涉及到三个阶段,分别是 初始化阶段,配置阶段,执行阶段。在 Gradle 中就是通过执行 Settings 类来完成构建的 初始化阶段

# Settings 类与 settings.gradle 的关系

就像大家所知的build.gradle文件是对应于Project的,那么settings.gradle对应于 Settings 类啦。

# includ 方法

在 Setting 类中,最重要的一个方法就是 include 方法了。

方法名 作用
void include(String... projectPaths); 添加需要参与构建的Project,接受一个可变参数,每一个值是一个Project路径

这里有一个需要注意的点:可变参数的路径并不是 project 的文件路径,它指的是当前 project相对于根project的路径。

例如:在一个 AS 的示例工程中,有如下一些 module ,那么每一个 project 的 path 该如何表示呢,下面我列举一个示例来表示一下:

GradleDemo(根Project) -> path = ""
app(子Project) -> path = ":app"
subapp(app的子project) -> path = ":app:subapp"
common(子Project) -> path = ":common"
play(子Project) -> path = ":play"

从上面的 module 的结构来看, GradleDemo 为根project ,它的路径是 :,而对于 appmodule 来说,它的 path 是 :appsubapp是 app project 的子 project ,它的 path 是:app:subapp。所以基于上面的理解,每一个 project 的路径都是相对于根project而言的,路径的分隔符是 : 而不是\

下面是 project路径 的格式:

:路径1:路径2

说了那么多,现在来看看如何使用 include 方法咯:

  • 添加一个 project
//添加:app这个module参与构建
include ":app"
  • 添加多个 project
//include 接受可变参数,使用 , 逗分开不同的路径
include ':app',':common'

# hook 初始化阶段的监听器

在初始化阶段中主要做的事有两件:

  • 确定哪些是需要构建的 project 。
  • 为所有的参与构建的 Project 创建对象。

那么下面列举是在执行 settings.gradle 脚本的监听回调:

gradle.settingsEvaluated {
println "【settings.gradle】 初始化执行结束"
} gradle.projectsLoaded {
Gradle gradle ->
println "【settings.gradle】 所有在 settings 中 include 的 Project 对象都创建完成了"
}

# 总结

虽然 Settings 类很简单,但是我们不能忽略的它的作用哦,毕竟它负责了 Gradle 构建的第一个阶段。在日常开发中,我们主要使用到的就是 include 方法了,所以本文也只演示了该方法的作用与使用。

 

Gradle Settings 类的学习的更多相关文章

  1. php大力力 [019节]php分页类的学习

    2015-08-26 php大力力019.php分页类的学习 [2014]兄弟连高洛峰 PHP教程14.2.1 分页需求分析 14:18 [2014]兄弟连高洛峰 PHP教程14.2.2 分页类中分页 ...

  2. 20175212童皓桢 在IDEA中以TDD的方式对String类和Arrays类进行学习

    20175212童皓桢 在IDEA中以TDD的方式对String类和Arrays类进行学习 要求 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 ...

  3. Exception类的学习与继承总结

    日期:2018.11.11 星期日 博客期:023 Exception类的学习与继承总结 说起来我们上课还是说过的!老师提到了报错问题出现主要分Exception和Error两类!第一次遇见这个问题是 ...

  4. 20155312张竞予 20170510实践一:在IDEA中以TDD的方式对String类和Arrays类进行学习

    实践题目 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split Arrays类 sort binarySea ...

  5. 20155326 第12周课堂实践总结(二)String类和Arrays类的学习

    20155326 第12周课堂实践总结(二)String类和Arrays类的学习 实践二 Arrays和String单元测试 实践题目 在IDEA中以TDD的方式对String类和Arrays类进行学 ...

  6. Settings app简单学习记录

    Settings是android系统设置的入口.主界面由Settings.java以及settings_headers.xml构成. Settings类继承自PreferenceActivity,而P ...

  7. 06.FileStream类的学习

    //FileStream类是用来操作字节的,也就是可以操作所有文件. 因为所有的文件都是以字节形式来存储的. //StreamReader类和StreamWriter类是用来操作字符的. FileSt ...

  8. 05.File类的学习

    File  是文件的意思 File类是一个静态类,所以File类是一个工具类 File类是专门操作文件的类 File的常用方法 namespace _16.File类的学习 { class Progr ...

  9. 04.Path类的学习

    path 是路径的意思. path类是一个静态类,所以path是一个工具类. Path类是专门用来操作路径的. Path的常用方法: namespace _15.Path类的学习 { class Pr ...

随机推荐

  1. python常用类库总结

    个人学习总结,如有错误,请留言指正. 类库归类总结 类库关系

  2. i++ 是线程安全的吗

    相信很多中高级的 Java 面试者都遇到过这个问题,很多对这个不是很清楚的肯定是一脸蒙逼.内心肯定还在质疑,i++ 居然还有线程安全问题?只能说自己了解的不够多,自己的水平有限. 先来看下面的示例来验 ...

  3. 二分类算法的评价指标:准确率、精准率、召回率、混淆矩阵、AUC

    评价指标是针对同样的数据,输入不同的算法,或者输入相同的算法但参数不同而给出这个算法或者参数好坏的定量指标. 以下为了方便讲解,都以二分类问题为前提进行介绍,其实多分类问题下这些概念都可以得到推广. ...

  4. SpringMVC - <mvc:default-servlet-handler/> 导致 Controller失效

    原文地址:http://blog.csdn.net/j080624/article/details/66969987

  5. a标签点击,页面自动刷新

    <a href="javascript:void(0)" id="reDiagnosis" class="checkBtn"oncli ...

  6. Redis cluster Specification 笔记

    ref: http://redis.io/topics/cluster-spec 1. 设计目标: 高性能:线性扩展:不支持合并操作:写操作安全:小概率丢弃:(对于每个key)只要有一个slave工作 ...

  7. leetcode-easy-array-283 move zeros

    mycode  77.24% class Solution(object): def moveZeroes(self, nums): """ :type nums: Li ...

  8. C# WinForm开发系列学习 地址 很详细

    http://www.cnblogs.com/peterzb/archive/2009/07/27/1531910.html

  9. 阶段3 1.Mybatis_11.Mybatis的缓存_2 延迟加载和立即加载的概念

    用户关联的account信息,假设一个用户管理的account有100个.那么我们在查询用户的时候那100个关联的信息也被查询出来. 用的时候才去查关联的数据 这两个不同的地方就是查询的时机不同 什么 ...

  10. ABAP基本数据类型

    ABAP 程序中共包含8种基本数据类型: 数据类型名称 描述 属  性 C Character Text(字符类型) 默认长度=1,默认值=blank,最大长度无限制 N Numeric Text(数 ...