Gradle基础知识

前言

随着业务需求变得越来越复杂,项目的规模也变得越来越大,项目越大包含的代码资源文件也就越多,而越大的项目往往需要越多的开发者共同维护,这种状态就导致即使是简单的构建目标对象文件也非常困难,于是就有了自动构建工具。早期的自动构建工具主要是Ant和Maven,不过Ant只是命令式配置执行,不容易维护和复用,Maven虽然有了插件化和依赖管理功能,但它的构建过程相对死板无法灵活配置,对于条件式的构建支持不够友好,鉴于它们存在的这些问题大牛们又开发出了Gradle构建工具。

Gradle执行阶段

阶段名称 阶段工作
初始化阶段 解析整个工程中的所有Project,构建所有的Project对应的project对象
配置阶段 解析所有的projects对象中的task,构建好所有task的拓扑图
执行阶段 执行具体的task及其依赖task

需要注意的是写在Gradle构建脚本中的代码分成两大类,配置代码和动作代码,动作代码是指Task接口中写在doFirst和doLast闭包里的代码,而除了动作代码之外的代码都是配置代码,配置代码会在配置阶段执行,动作代码在执行阶段才会执行。

监听接口

Gradle提供了构建生命周期钩子来支持执行构建过程中发生某件事情时用户想要执行逻辑,这种逻辑可以添加在构建阶段的之前、过程中和之后,可以使用Gradle提供的监听器接口来做处理。

监听接口 监听阶段
project.beforeEvaluate() 在配置阶段开始之前,初始化阶段和配置阶段之间的监听
project.afterEvaluate() 在配置阶段之后,在执行阶段之前执行的监听
project.gradle.buildFinished { } 在gradle生命周期完之后的监听

如果在build.gradle里设置beforeEvaluate会发现里面的代码根本没有被执行,这是因为在初始化阶段build.gradle文件中的代码根本不会被执行,执行build.gradle里的配置代码其实已经到了配置阶段,这种在配置阶段之前执行的代码可以放到~/.gradle/init.d文件夹下的文件里执行,这样的话这个执行脚本的代码就会成为本机所有工程都会执行的逻辑。

// ~/.gradle/init.d/project.gradle
gradle.projectsLoaded {
    gradle -> gradle.rootProject.beforeEvaluate {
        println "Root Project Before Evaluate"
    }
}

$ gradle clean
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8

> Configure project : 
Root Project Before Evaluate

还可以通过addListener接口来添加监听事件

Gradle命令行

Gradle命令行主要是针对构建脚本中的task任务执行,常用的任务分为帮助类Task、构建设置类Task和构建Task。在实际工作中会经常用到帮助类Task来查看构建相关的信息。

帮助任务 任务用处
gradle projects 可以查看所有的项目树形结构
gradle properties 列出项目中所有的属性,可以是Project对象提供,也可以使用户自定义属性
gradle tasks 显示所有可运行的Task包括它们的描述信息
gradle buildEnvironment 显示根项目构建脚本的依赖
gradle components 该项目所有的Comoponent
gradle dependencies 项目的所有依赖

除了上面的命令行后面还可以添加选项,常用选项如下:

选项 意义
-b buildfile 不使用默认的build.gradle构建脚本使用buildfile脚本
–offline 构建时不访问远程仓库,只使用本地仓库构建
–deamon 使用后台线程执行任务,可以加速构建过程
–stop 停止处于后台的构建任务线程

Project接口

Gradle里的根project负责管理所有内部的子project,而子project负责输出某个资源,

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值