Gradle基础---构建+插件编写+插件分析(笔记二)

上一篇文章对gradle基础概念进行了笔记https://blog.csdn.net/qq_20395245/article/details/105454881,这篇文件将对构建,插件编写和插件分析的基础进行记录。首先,还是使用笔记一中手动按照gradle wrapper官网说明声明构建的gradle-demo项目为例,由于gradle项目是可以被IDeaJ识别的,所以这里选用用IDeaJ直接Open打开,打开后可以看到在IDE中会先进行构建过程:

耐心等待,最后左下角gradle-demo:load build...变成gradle-demo:success就完成导入构建了,同时会发现gradle还执行了一个任务,输出了build.gradle中的println "helloworld"任务内容,这就引出了gradle lifecycle,也就是gradle生命周期。

Gradle生命周期:官方文档https://docs.gradle.org/current/userguide/build_lifecycle.html

从官方文档中,我们可以了解到gradle生命周期有三个步骤:初始化-->配置-->执行。每个步骤会进行各自的工作,下面对每个步骤进行描述,这个生命周期有助于了解一个gradle文件中各个任务的执行顺序和执行结果。

(1)Initialization初始化阶段:

根据官方描述,gradle支持单项目及多项目构建,在初始化这个阶段,gradle会识别哪些项目会参与到构建当中,同时会为这些参与构建的项目分别创建各自的Project实例(Project是Gradle内部重要的一个属性,后面还会继续说明)。但是gradle怎么识别哪些项目要参与构建呢,文档中也做了说明,就是一个默认的settings.gradle文件,这个文件在初始化期间就执行完成了,如我们的gradle-demo中新建一个settings.gradle加上一段输出,在build.gradle中也加上一段输出,重新构建这个项目可以看到:

会先输出settings.gradle里的内容,然后再进行build.gradle的构建,这也就能解释gradle在构建前可以识别哪些项目需要参与到真正构建的原因了。特别说明的是对于多项目构建必须要有这个settings file,当引入其他项目时需要使用include声明并引入到 build script classpath中,例如settings.gradle定义,其中projectXXX这些项目是需要进行编译才能被使用,可以提前编译或在gradle中进行compile编译:

include 'project1', 'project2:child', 'project3:child1'
project(':projectA')

对于子项目的调用可以使用project.subproject.XXXX方式。另外对于单项目构建这个setting file是可选的。

(2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值