zoukankan      html  css  js  c++  java
  • Gradle Settings 类的学习

    # 任务

    • 了解 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 方法了,所以本文也只演示了该方法的作用与使用。

     



  • 相关阅读:
    hibernate注解note
    hibernate的批量删除
    hibernate实现多表联合查询
    hibernate联合主键注解方式
    jsp之radio取值与赋值
    @Transient注解的使用
    工程师如何在工作中提升自己?(公众号)
    HTML中让表单input等文本框为只读不可编辑的方法
    ajax, jQuery, jQueryeasyUI
    关于easyui的问答(来自百度问答)
  • 原文地址:https://www.cnblogs.com/Im-Victor/p/11138657.html
Copyright © 2011-2022 走看看