gradle的设计和原理说明之kafka-2.6.0补充


  Gradle是安卓开发的常用构建工具,但不仅于此,其可以构建任何应用,当然也包括java.maven目前也是构建java的常用工具,但是与gradle相比,还是有较大的不足.
  类似前端的构建工具webpack使用js来编写构建文件,gradle也是使用了jvm语言groovy来编写构建文件,所以在构建基于jvm的工程时表现的更加正统,本人也建议使用gradle来构建java工程.

1 gradle和maven的对比

1.1 两者对工程构建定义的差异

  Maven视工程构建为一个业务流程,有各个组成部分和执行顺序,而Gradle则视工程构建为代码运行,其把工程构建先翻译为了代码,再执行代码.
  可见,Maven是面向解决方案的,而Gradle则是面向编程语言的.两者面向的对象不同,因而对工程构建的定义也不同,其流程设计必然不同.

1.2 maven构建流程设计概述

  Maven对工程构建流程的设计注重架构的理念,明确的分为三个层面:
  1 上层
  生命周期是抽象的最上层设计.分为三类,每一类都有着明确的要达成的目的.
  2 中层
  生命周期的阶段是抽象的中层设计.该层的各个阶段本身也是抽象的,但是这些阶段有着严格的顺序,整体上是不可改变的.
  3 下层
  这是最底层,也是中层各个阶段的具体实现.借助插件的功能,在每个阶段绑定不同的插件功能,以此来实现具体的逻辑执行,进而达成最上层生命周期的目的.
  可见,maven的设计思想是基于架构的,有组织和结构,也有抽象和实现.其位于最上层的三类生命周期也是相互独立的,它们之间不存在任何相互的约束.

1.3 gradle构建流程设计概述

  Gradle对工程构建流程的设计注重程序自身的逻辑,采用按时序进行的多阶段流水线模式:
  1 初始化阶段
  收集工程的所有的父子项目,形成项目树.
  2 配置组合阶段
  依据项目树,解析各个项目的task依赖与执行顺序.
  3 执行阶段
  按顺序执行各个项目的各个task.

1.4 两者的对比

  1 设计差异
  Maven更加注重高层的设计,事先就把架构确定了,只待填充.上层和中层的设计是固定的,没有什么可改变的,具体实现则由下层的插件的功能来填充.
  Gradle则是把要构建的工程当作要执行的代码来对待,按照运行代码的逻辑来处理.而工程怎么构建,需要什么样的task,其依赖是什么则完全由作者来定,构建的代码也是由作者来编写.
  2 灵活性的差异
  使用maven使得作者参与的程度很低,基本没作者这么事了.而使用gradle则相反,如何构建则由作者完全决定.这就完全决定了其灵活性相差巨大.
  3 使用难度的差异
  很多人认为gradle使用难度较大.其实在本人看来,正好相反,gradle没什么难度,只是对它的原理可能不清楚才造成这么一种认识.maven没什么原理,因为其只是提供解决方案,具体的结构都已定死了,直接拿来使用就可以了.

2 gradle原理说明

  Gradle使用groovy来编写构建逻辑,和webpack一样,都是使用了具体的编程语言.这里gradle的原理主要是体现在其使用了由groovy提供的dsl语法功能.
  Gradle借助groovy提供的dsl语法,以task为最小执行单位,通过插件构建了完整的编程环境,使得工程构建简介明了,构建逻辑清晰.
  具体的dsl语法以及gradle是如何实现的这里不再详述,可参见[Gradle开发快速入门——DSL语法原理与常用API介绍]
https://www.paincker.com/gradle-develop-basics

3 总结

  对比下来,gradle是面向编程语言的,而maven是面向解决方案的.一种解决方案不可能解决所有问题,但是通过编程语言编写各种解决方案就能解决各种问题,这也是gradle与maven相比最大的不同了,也是最大的优势了.
  Gradle在构建大型工程时有着明显的各方面的优势,其灵活和几乎涵盖所有功能的特点使其会被多数人所接受,代替maven也只是时间的问题.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值