美文网首页
【白水日记】Gradle

【白水日记】Gradle

作者: d2665f7588cb | 来源:发表于2021-03-04 16:54 被阅读0次

        关于gradle,是我们熟悉又陌生的事物,每次运行项目都在用,但是一些细节,却不太了解,不如做一次查缺补漏

    gradle是一种自动化构建工具,基于Groovy来声明项目配置

    Groovy的语法和java很相近,支持byte,short,int,long,float,double,char类型

    定义变量:

    int a = 1

    def b = 2

    String str = "123"

    定义数组:

        def array = [1,2,3,4]

    array.add(5)

    定义map:

    def map = ["name:"123"]

    循环:

        for(int i = 0;i<10;i++){

    println("i is $i")

    }

    再引入一个dsl的概念,域特殊语言,是一种闭包,开放的匿名代码块,可以入参,有返回值,可以赋值给变量

    {[params->] }

    def a = {println("aaa")}

    a()

    有一个参数时,默认为it

    多个参数时候,需要指定名字

        回归到Android项目中,可以分为三类gradle

        settings.gradle

        声明当前工程包含哪些子工程 

        build.gradle

            根目录:定义所有子工程共用的配置

            子工程:针对当前子工程行为的配置 

        gradle.properites

        配置开关参数 

    gradle的生命周期:初始化,配置,执行

        监听各个生命周期的回调,可以实现:

    gradle.addBuildListener(newBuildAdapter(){@OverridevoidsettingsEvaluated(Settings settings){super.settingsEvaluated(settings)println("life-cycle: 初始化")    }@OverridevoidprojectsEvaluated(Gradle gradle){super.projectsEvaluated(gradle)println("life-cycle: 配置")    }@OverridevoidbuildFinished(BuildResult result){super.buildFinished(result)println("life-cycle: 构建结束")    }})

    初始化:收集需要构建的工程,创建层次,为每个项目创建project实例

    settings.gradle在初始化之前执行 

        配置阶段:执行各个目录下的build.gradle脚本,根据配置关系,并生成关系图,先执行根目录,再执行子目录

    执行:根据依赖关系,按顺序执行task

    常用的对象:

        project rootProject

        本质都是接口

    打印目录:

    println("root:{$rootProject.projectDir()}")root:{/Users/chip/project/TestGradle()}

    遍历所有子工程:

    gradle.rootProject.childProjects.each {            name,p->println("name:{$name}+path:{$p.projectDir}")    }

    相关文章

      网友评论

          本文标题:【白水日记】Gradle

          本文链接:https://www.haomeiwen.com/subject/pcxwxltx.html