美文网首页
Gradle:构建生命周期

Gradle:构建生命周期

作者: 码农翻身记 | 来源:发表于2020-01-21 17:47 被阅读0次

    一、Gradle简介

    1.1 基于Groovy的构建工具

    Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。Gradle
    Gradle 正迅速成为许多开源项目和前沿企业构建系统的选择,同时也在挑战遗留的自动化构建项目。
    gradle主要由以下三部分组成:

    • groovy核心语法
    • build script block
    • gradle api

    1.2 核心思想

    Gradle是基于依赖的编程语言,我们可以自定义任务和任务之间的关系,Gradle会在执行前构建任务的依赖关系图,一个有向无环图,能保证按顺序执行任务,且只执行一次。

    1.3Gradle功能及优势

    • Gradle对多工程的构建支持很出色,工程依赖是Gradle的第一功能;
    • Gradle支持局部构建;
    • 支持多方式依赖管理:包括从maven远程仓库、nexus私服、ivy仓库以及本地文件系统的jars或者dirs;
    • Gradle是第一个构建集成工具,与ant、maven、ivy有良好的相容相关性;
    • 轻松迁移:Gradle适用于任何结构的工程,你可以在同一个开发平台平行构建原工程和Gradle工程。通常要求写相关测试,以保证开发的插件的相似性,这种迁移可以减少破坏性,尽可能的可靠。这也是重构的最佳实践;
    • Gradle的整体设计是以作为一种语言为导向的,而非成为一个严格死板的框架;
    • 任务拆解粒度细,每个子工程编译、源码编译、资源编译都是一个个子任务,可以修改task任务来精细控制;
    • 扩展性强,支持插件机制;
    • 免费开源。

    二、Gradle项目组成

    创建一个工程,命名为GradleDemo,然后再创建2个子工程,整个工程的组成如下,总工程目录下有build.gradle和setting.gralde文件,然后每个子工程下有自己的build.gradle。

    • build.gradle:主要用于对工程进行配置。比如配置版本、依赖、使用的插件等等。
    GradleDemo
        --app
            --src
            --build.gradle
        --common
            --src
            --build.gradle
        --pay
            --src
            --build.gradle
        --build.gradle
        --setting.gradle
    

    打开setting.gradle:

    include ':app', ':common', ':pay'
    

    可以修改setting.gradle确定构建需要哪些工程。

    三、Gradle构建生命周期

    3.1、生命周期

    用了很长时间才知道Gradle其实也有生命周期的说法的,以前都是对着网上的教程依样画葫芦配置工程,没去了解Gradle的背后流程。
    Gradle的生命周期分为3个阶段:

    • 初始化阶段
      在初始化阶段,Gradle的主要任务是确定有哪些工程参与构建,会解析settings.gradle文件,为文件中参与构建的的项目都创建project对象。
    • 配置阶段
      解析各个project的build.gradle,会完成以下任务:
      1、加载插件
      2、加载依赖
      3、加载Task
      4、执行脚本,自定义的插件、Gradle支持的API等

    自定义的插件在这个阶段会执行。

    • 执行阶段
      这个阶段很简单,就是执行阶段二加载的task及依赖task。

    在build.gradle中定义的task任务在这个阶段执行。

    3.2、生命周期的监听

    在总工程目录下(或子工程)的build.gradle下添加以下代码,可以实现各个阶级的监听。

    this.beforeEvaluate {
        println '配置阶段开始回调...'
    }
    
    this.afterEvaluate {
        println '配置阶段执行完毕回调...'
    }
     
    this.gradle.buildFinished {
        println '执行阶段执行完毕回调...'
    }
    
    //等同于 beforeEvaluate
    this.gradle.beforeProject {
    }
    
    //等同于 afterEvaluate
    this.gradle.afterProject {
        println '配置阶段执行完毕回调...'
    }
    

    相关文章

      网友评论

          本文标题:Gradle:构建生命周期

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