1. Gradle是什么,Gradle与Maven有什么不同

       作为一个经常使用maven的老用户,最近在github下载源码的时候,发现好多项目的构建工具都在使用Grandle,于是自己就产生了这样的疑问,Gradle是什么,Gradle与maven有什么区别,为什么要使用Gradle。这是这篇博客的由来

  • Gradle是什么 

      Gradle是一个开源的自动化构建工具,它的优势在于灵活性还有性能。Gradle的构建脚本可以使用Groovy和Kotlin语言(DSL-领域特定语言)来编写。

     1. 高度自定义----- Gradle可以对各个模块,以最基础的方式进行自定义和扩展。

     2.快速构建-------Gradle通过重复使用之前的构建输出,可以很快的完成任务,仅处理有变动的任务,并且是并发的执行。

     3.功能强大-------Gradle是安卓的官方构建工具,并且支持许多流行的语言和技术

  •   Gradle与Maven有什么区别,Gradle优势在哪里

    Gradle与Maven主要不同的地方分别为:灵活性、性能、用户体验、依赖管理。

 1. 灵活性:谷歌选择Gradle作为安卓的官方构建工具,并不是因为构建脚本可以进行编码,而是因为Gradle的基础模块,可以进行扩展。Gradle模块允许使用原生的C和C++进行开发,可以扩展到任何生态系统。

      Gradle和Maven都提供了一种思想:约定优于配置。然而Maven提供了非常死板的模型,让自定义功能,过程变得冗长,有时甚至是不可能。然而这样使可以使Maven的构建,变得比较容易理解,只要你没什么特别的需求。但是这样对于许多自动化的问题是不合适的。

2. 性能:改善构建时所花费的时间,是实现快速交付最直接的一种方式,Gradle和Maven都是并发的进行构建、并发的解析依赖。最不同的地方是Gradle避免的大量的重复性工作。

增量特性:Gradle通过追踪任务的输入和输出,避免了重复性工作,只运行必须的任务,并且如果可能只执行被改变的文件。

缓存:当拥有同样输入的时候,Gradle重复使用之前构建的输出。

Gradle守护进程:一个长时间存活的进程,维持构建信息在内存中一直有效

通过这些特性,在一些相似的场景下,Gradle的构建速度相比Maven至少快2倍。(在大型的构建中,使用构建缓存,速度可能提高100倍)

3. 用户体验

Maven的长期使用,意味着它对IDE的支持,可能会更好。但是Gradle对IDE的支持,会持续快速提高

4. 依赖管理

Gradle和Maven都提供了从配置仓库解析依赖关系的能力,并且都能够缓存依赖都本地,以及并发的去下载他们。

消费者类库:Maven只能根据版本,进行依赖覆盖。而Gradle提供了依赖选择自定义和代替规则。这个代替的机制,使Gradle能够同时构建多个项目,创建一个复合型的构建。

Maven的内置作用域很少,例如集成测试和单元测试没有进行分离。Gradle允许自定义依赖作用域

Maven的依赖冲突解决办法使用最短路径,这受声明顺序的影响。Gradle解决冲突的办法是,使用最高的版本

提供者类库:Gradle允许生产者声明依赖为:api 、implementation,防止不需要的类库泄露给消费者

你可能感兴趣的:(Gradle,gradle)