gradle和maven之间的比较

gradle和maven都可以用来构建java程序,甚至在某些情况下,两者还可以相互转换,那么他们两个的共同点和不同点是什么?我们如何在项目中选择使用哪种技术呢?一起来看看吧。

gradle和maven之间的比较

gradle和maven的比较

虽然gradle和maven都可以作为java程序的构建工具。但是两者还是有很大的不同之处的。我们可以从下面几个方面来进行分析。

可扩展性

Google选择gradle作为android的构建工具不是没有理由的,其中一个超级重大的缘由就是由于gradle够灵活。一方面是由于gradle使用的是groovy或者kotlin语言作为脚本的编写语言,这样极大地提高了脚本的灵活性,但是其本质上的缘由是gradle的基础架构能够支持这种灵活性。

gradle和maven之间的比较

你可以使用gradle来构建native的C/C++程序,甚至扩展到任何语言的构建。

相对而言,maven的灵活性就差一些,并且自定义起来也比较麻烦,但是maven的项目比较容易看懂,并且上手简单。

所以如果你的项目没有太多自定义构建需求的话还是推荐使用maven,但是如果有自定义的构建需求,那么还是投入gradle的怀抱吧。

性能比较

虽然目前大家的机子性能都比较强劲,好像在做项目构建的时候性能的优势并不是那么的迫切,但是对于大型项目来说,一次构建可能会需要很长的时间,尤其对于自动化构建和CI的环境来说,当然希望这个构建是越快越好。

gradle和maven之间的比较

Gradle和Maven都支持并行的项目构建和依赖解析。但是gradle的三个特点让gradle可以跑得比maven快上一点:

增量构建

gradle为了提升构建的效率,提出了增量构建的概念,为了实现增量构建,gradle将每一个task都分成了三部分,分别是input输入,任务本身和output输出。下图是一个典型的java编译的task。

gradle和maven之间的比较

以上图为例,input就是目标jdk的版本,源代码等,output就是编译出来的class文件。

增量构建的原理就是监控input的变化,只有input发送变化了,才重新执行task任务,否则gradle认为可以重用之前的执行结果。所以在编写gradle的task的时候,需要指定task的输入和输出。TG:li9047

© 版权声明

相关文章

10 条评论

您必须登录才能参与评论!
立即登录
  • 头像
    大脸猫 读者

    Gradle慎用,都是坑

    无记录
  • 头像
    暖月柔阳 读者

    只能说gradle构建快5倍

    无记录
  • 头像
    贺钊 读者

    可能是你把坑趟完了,刚用时各种卡,慢,新旧版本不兼容,一般时间跟gradle斗智斗勇,其实就是为了下载个jar包而已,本来我一个ctrls就变异完了,gradle能编译上几分钟

    无记录
  • 头像
    佳乐 读者

    你用的是eclipse吧?用idea编译不如eclipse但是整体还是idea完胜

    无记录
  • 头像
    V王小猫 读者

    gradle 很好啊,只不过现在公司的项目没用,所以已经三年没有碰这个构建工具了

    无记录
  • 头像
    老苗干饭日记 读者

    主要还是看个人习惯跟公司的规定吧

    无记录
  • 头像
    小末 读者

    我个人来说还是比较推荐用gradle的,maven太笨重了

    无记录
  • 头像
    读者

    我比较期望maven被淘汰

    无记录
  • 头像
    阿兵 读者

    机器好网速快 那就不要用gradle 学习成本比较高,网上资料基本是maven的

    无记录
  • 头像
    好运福嘟嘟 读者

    其实更研发者友好,mvn慢,感觉是上古技术

    无记录