在国外某社交网站上有一个关于迁移 Spring Boot 迁移 Maven 至 Gradle 的帖子:

该贴子上也有很多人质疑:Maven 用的好好的,为什么要迁移至 Gradle?

虽然该贴子只是说 Gradle 牛逼,但并没有说迁移至 Gradle 所带来的影响和价值。

所以,Spring Boot 官方对此也发了博文作了解释:

https://spring.io/blog/2020/06/08/migrating-spring-boot-s-build-to-gradle

栈长简单概括一下。

没错,Spring Boot 做了一个重大调整:

在 Spring Boot 2.3.0.M1 中,将首次使用 Gradle 代替 Maven 来构建 Spring Boot 项目。

为什么要迁移?

Spring Boot 团队给出的主要原因是,迁移至 Gradle 可以减少构建项目所花费的时间

因为使用 Maven 构建,回归测试时间太长了,等待项目构建大大增加了修复 bug 和实现新特性的时间。

而 Gradle 的宗旨是减少构建工作量,它可以根据需要构建任何有变化的地方或者并行构建。

当然,Spring Boot 团队也花了很多时间来尝试用 Maven 进行 并行构建,但因为构建 Spring Boot 项目的复杂性,最终失败了。

另外,Spring Boot 团队也看到了在其他 Spring 项目中使用 Gradle 以及并行构建所带来的提升,并且还可以使用 Gradle 在一些第三方项目上的构建缓存,这些优势都促使 Gradle 带到构建 Spring Boot 项目中来。

迁移有什么好处?

栈长使用 Maven,哪怕只改一个代码也是构建全部,构建项目确实要花不少时间。

Spring Boot 官方也给出了数据,一次完整的 Maven 项目构建一般需要一个小时或者以上,而在过去的 4 周时间内,使用 Gradle 构建的平均时间只用了 9 分 22 秒!!!

如下面截图所示:

光从构建时间来看,效率真是倍数级的。

https://github.com/spring-projects/spring-boot/tree/v2.3.0.RELEASE

栈长特意去看了下,在 Spring Boot 2.2.8 中使用的是 Maven:

而最新发布的 Spring Boot 2.3.1 已经是切换到 Gradle 了:

会带来什么影响?

也许会有小伙伴质疑,Spring Boot 迁移到了 Gradle,会不会对公司现有的 Maven 项目或者后续的版本升级造成影响?

如果你只是使用 Spring Boot 框架来搭建系统,那还是可以继续使用 Maven 来管理依赖的,Spring Boot 会继续在 Maven 中央仓库提交。

如下面所示:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot</artifactId><version>2.3.1.RELEASE</version>
</dependency>

因为当版本确定之后,这个 Maven 构建只是一次性的,不会影响 Spring Boot 团队的日常迭代效率。

但是,如果我们需要在本地构建 Spring Boot 源码,或者你正在学习最新 Spring Boot 源码,就需要掌握 Gradle 构建了。

题外话,Gradle 肯定是未来的趋势,但也不一定非得迁移至 Gradle,只有适合自己的才是最好的,毕竟现在 Maven 和 Gradle 都是主流,但是 Maven 更占有市场,很多主流开源项目都是以 Maven 依赖来作为示例演示的。

Spring Boot 把 Maven 干掉了,正式拥抱 Gradle!相关推荐

  1. Spring Boot项目(Maven\Gradle)三种启动方式及后台运行详解

    Spring Boot项目三种启动方式及后台运行详解 1 Spring Boot项目三种启动方法 运行Application.java类中的Main方法 项目管理工具启动 Maven项目:mvn sp ...

  2. Spring boot的Maven配置依赖

    Spring boot 的 Maven 配置依赖 springboot spring pom maven models 我们通过引用spring-boot-starter-parent,添加sprin ...

  3. spring boot 本地maven手动添加pom.xml依赖

    spring boot 本地maven手动添加pom.xml依赖 按照如下pom.xml配置,本地jar包可以正常使用,适用于maven仓库中没有的的jar包下载下来,手动添加依赖. <!-- ...

  4. JavaEE + Oracle + Spring Boot + Mybatis + Maven 开发简易版银行管理系统(附源码)

    文章目录 JavaEE + Oracle + Spring Boot + Mybatis + Maven 开发简易版银行管理系统 一.系统介绍 二.开发步骤 三.系统展示 四.开发总结 五.数据库相关 ...

  5. Spring boot的Maven插件(一):repackage目标

    简介 Spring Boot Maven Plugin插件提供spring boot在maven中的支持.允许你打包可运行的jar包或war包. 插件提供了几个maven目标和Spring Boot ...

  6. Spring Boot 2.3.5.RELEASE正式升级,SpringBoot新版本发布

    版本升级 spring boot 正式版本于今日升级到2.3.5.Release. 应用案例 微服务:https://github.com/matevip/matecloud SpringBoot也同 ...

  7. spring boot 通过Maven + tomcat 自动化部署

    使用maven创建的springboot项目,默认是jar包,springboot还有自己带的tomcat. 现在为了简单实现本地自动发布项目到服务器,需要通过发布war包的形式,通过maven将项目 ...

  8. spring boot 使用maven和fat jar/war运行应用程序的对比

    文章目录 简介 Spring Boot Maven Plugin 使用Maven命令来运行应用程序 作为fat jar/war包运行应用程序 详解War文件 详解jar文件 如何选择 使用maven和 ...

  9. Spring Boot的Maven插件Spring Boot Maven plugin详解

    pring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven ...

最新文章

  1. mac上mysql8.0以tar.gz方式手动安装
  2. 如何用虚幻引擎4和C++开发游戏?斯坦福相关课程上线
  3. App-V应用程序虚拟化之二部署Template Server
  4. CVPR 2017 SANet:《SANet: Structure-Aware Network for Visual Tracking》论文笔记
  5. C# 系统应用之透明罩MyOpaqueLayer实现360界面阴影效果
  6. python数据类型基础与解压缩
  7. C语言中的标识符以字母或下划线开头,牛逼大神整理的C语言基础知识,你确定你不码下来?...
  8. 数据库MySQL基础---JDBC开发步骤--JDBC封装工具类--PreparedStatement实现CRUD操作
  9. 《深度学习》李宏毅 -- task5网络技巧设计
  10. leapftp怎么用,掌握leapftp的使用方法只需6步
  11. MySQL之redo日志
  12. 云服务器被恶意ddos攻击了怎么办?
  13. Android中补间动画相关知识
  14. Quantile g-computation的介绍及R实现
  15. TypeScript 学习资源合集
  16. 算笔账:养老保险应该少交还是多交
  17. 新旧电脑安装win11系统【超简单教程】
  18. 怎么免卸载升级太极中的软件
  19. c语言中函数floor用法,C 库函数
  20. 不要让你的习以为常,用余生去懊悔!

热门文章

  1. TLD(Tracking-Learning-Detection)学习与源码理解之(五)
  2. Windbg/KD驱动调试点滴–将平时调试的一些小方法共享给大家 --------- 转
  3. www.pythonchanlleges.com
  4. 重绘Winform窗体
  5. OpenCV人脸识别Eigen算法源码分析
  6. Linux经常使用的命令(十) - nl
  7. maven小节,Nexus私服,构件打包发布,动态资源过滤,自动部署到本地或远程服务器...
  8. 摩托罗拉移动员裁员重点是研发
  9. Windows线程同步机制的区别与比较及进程通信方法
  10. 临界区、事件、互斥量、 信号量--四种控制多线程同步与互斥的方法