maven与gradle构建项目工具之间的解读

一、关于主要构建项目工具的介绍
目前流行的主要有三大构建工具:Ant、Maven和Gradle。目前,Ant几乎销声匿迹、Maven也日薄西山,而Gradle的发展则如日中天。Maven的主要功能主要分为5点,分别是依赖管理系统、多模块构建、一致的项目结构、一致的构建模型和插件机制。Maven与Gradle在使用中各有千秋,根据使用场景择优用之。
这里主要介绍maven与gradle的区别及联系
1. Maven 与 Gradle 对比
maven要引入依赖 pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.1.5.RELEASE</version>
</dependency>

而Gradle引入 build.gradle

implementation 'org.springframework.boot:spring-boot-starter-web'

优点: Gradle 相当于 Maven 与 Ant 的合体
缺点: 对于微服务多项目的子类引用,不如 Maven

Maven

项目结构/依赖由pom.xml定义

生产代码存放在src/main/java下

测试代码存放在src/test/java下

Gradle

项目结构/依赖由build.gradle定义

生产代码存放在src/main/java下

测试代码存放在src/test/java下

2. 构建流程和生命周期
Maven

三个标准的生命周期(lifecycle)
最小的运行单元是目标(goal)
插件可以把自己的目标绑定在生命周期的某个阶段(phase)上
Gradle

没有显示的生命周期
最小的运行单元是任务(task),任务之间可以相互依赖
可以动态地创建任务

3. 包管理和传递性依赖
Maven

一个包由groupId/artifactId/version确定唯一坐标
包来源于中央仓库
传递性依赖
当某个包的的使用依赖于其他包时,Maven会自动导入所有的依赖包
Gradle

使用Ivy的构件系统,是Maven的构件系统的超集

Ant ivy是一个比Maven仓库更加广阔的仓库

与Maven仓库兼容

当出现依赖冲突时

Maven依赖解调遵循两个原则,路径最近原则以及定义顺序原则

Mavenc依赖冲突.png

Gradle的冲突解析则是选用新的版本(新的版本一般都会向下兼容)
总结:

Maven

稳定可靠,插件众多。(这么多年版本一直维持在3.XX,而且很久才发布一次小更新,说明他稳定且bug较少)

略显啰嗦,自定义逻辑较麻烦(Maven使用xml的方式进行配置,xml的劣势繁琐就会体现在Maven上)

大型项目会逐渐遇到性能问题

使用Maven构建的项目都会经过几个生命流程,内部没有缓存机制,项目越来越大重新构建所花费的时间也就越长。
由于Maven的开发基本靠社区支持,没有更多的资金用于继续开发维护Maven,导致开发基本停泻。

Gradle

Gradle采用代码逻辑的方式进行构建,使得它能更加的灵活。
Gradle内部存在缓存机制(当文件输入和输出都没改变的情况下,认为这就是没变的代码,直接进行输出。但当你改变的依赖包版本,它有时并没更新,也是缓存机制的问题),相比会快些。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值