为什么 Spring Boot 2.3.0 放弃Maven最终拥抱Gradle

在 2.3.0 中对 Spring Boot 进行了相当重大的更改,这是使用 Gradle 而非 Maven 构建的项目的第一个版本。

Spring 的每个项目都独立的项目组在开发运营,在用户最常使用的白盒部分(例如 API 设计)保持一致性,对于用户不可见的黑盒部分,各个项目组选择自己适合工具没有统一的约定。

例如: 项目构建工具。Spring Framework 自 2012 年的 3.2.0 起就使用 Gradle 构建,而一年后开始使用 Spring Boot,此后不久又开始使用 Spring Cloud,两者都基于 Maven。

为什么要切换

Spring Boot 团队考虑由 Maven 切换到 Gradle 的主要原因为了减少构建项目所需的时间。在开发和测试过程中,等待构建完成所花费的时间增加了修复错误和实现新功能所花费的时间。

为了解决这个问题,团队曾尝试利用 Maven 对并行构建的支持。由于 Spring Boot 构建的复杂性,特别是对 Invoker 插件的使用,尝试失败。通过将构建分为四个部分来解决 CI 问题。首先构建项目的主要核心,然后并行构建三个独立的部分。但 CI 的构建仍需要一个小时或更长时间。此外,由于针对的是模块化 CI 构建,因此并没有使得开发人员本地构建效率有所改变。

Spring Boot 团队在其他利用 Gradle 作为构建工具的 Spring 项目中看到了 Gradle 的增量并行构建以及在第三方项目中看到了 Gradle 的构建缓存的好处。希望通过使用 Gradle 为 Spring Boot 构建获得类似的好处。

Gradle 具有非常灵活的构建模型,并且可以定义每个任务的输入和输出及其相互依赖性。这种构建模型的好处是,它允许任务并行运行,同时也可以增量、缓存或完全跳过。换句话说,Gradle 可以最小化的执行必要的 CI 任务。虽然可以使用了 Gradle Enterprise 的 Maven 支持,我们也可以享受构建缓存和跳过的好处。但是要充分享受这四个方面的好处,必须尝试切换到 Gradle。

如何切换

Gradle 配置过于灵活,导致它的构建比基于 Maven 构建更难以维护和理解。例如: 同一个构建结果,可以通过不同的配置实现。如果切换到 Gradle,需要避免这种情况。从目前发布的四个 Spring Boot 2.3 里程碑版本,在核心团队或贡献者中,还没有发现任何重大的构建问题。

  • Spring Boot 关键功能是约定优于配置,将这种方法应用于构建。避免在 build.gradle 文件中包含命令式逻辑,编写了几个可以在项目的中找到的小插件 buildSrc。。

虽然现有 Gradle 生态系统对 Spring Boot 构建几乎空白,需要从头通过编写很多通用的 gradle 插件来应用到 Spring Boot,但迁移到 Gradle 的提交从代码库中删除了近 9500 行。

切换结果

就减少项目构建时间而言,将构建迁移到 Gradle 无疑是成功的。如上所述,在 CI 和开发人员机器上,基于 Maven 的完整构建都需要一个小时或更长时间。而基于 Gradle 的平均成功构建时间为 9 分 22 秒,如以下截图所示:

如果对构建性能的更多细节感兴趣,可以在 Spring Boot 的公共Gradle Enterprise实例上获得更多数据。

除了提高性能外,对其他功能进行探索。例如,一段时间以来,进行许多不稳定的测试。由于这些原因,构建失败的次数比预期要多,可以在 Tests 仪表板中看到这一点。使用 Gradle 分片测试来替代 CI 的通用测试方案,并帮助我们了解是否已成功解决问题。

结论

CI 构建现在平均大约需要 20 分钟,比以前快 3-4 倍。 本地构建平均需要 2 分钟 30 秒,比以前快 20-30 倍。

来源:掘金 链接:
https://juejin.im/post/5ee6c3dc6fb9a047b75a26bc

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Spring Boot 2.3.0 对应的 Redisson 版本是 3.12.5。你可以在 Spring Boot 官方文档中查看更多关于 Spring Boot 2.3.0 的信息。同时,Redisson 的官方文档中也提供了 Redisson 版本与 Spring Boot 版本之间的对应关系。建议在集成 Redisson 时,选择与你使用的 Spring Boot 版本兼容的 Redisson 版本。 ### 回答2: Spring Boot 2.3.0版本对应的Redisson版本是3.12.3。 Redisson是一个基于Redis的Java驻内存数据网格(In-Memory Data Grid)和分布式计算框架,简化了对分布式数据结构和服务的访问和操作。它提供了多种并发的集合数据结构,如Map、Set、Queue等,并且支持分布式锁和分布式AtomicLong等功能。 在Spring Boot项目中使用Redisson作为Redis的客户端,可以方便地访问和操作Redis服务。Spring Boot 2.3.0版本集成了Redisson 3.12.3作为默认的Redis客户端版本。我们可以直接在pom.xml文件中引入Redisson的依赖,并进行相应的配置,即可使用Redisson连接和操作Redis。 在使用Spring Boot版本为2.3.0的项目中,如果想使用Redisson,可以在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>3.12.3</version> </dependency> ``` 然后,在application.properties(或application.yml)文件中配置Redisson的连接信息,如Redis的地址、端口、密码等。配置完毕后,就可以在Spring Boot项目中使用Redisson进行对Redis的访问和操作了。 需要注意的是,Redisson的版本与Spring Boot的版本可能不完全一致,因此在实际使用中,可以根据项目需求选择适合的Redisson版本。 ### 回答3: Spring Boot 2.3.0 对应的 Redisson 版本是 3.12.2。在 Spring Boot 2.3.0 中,Redisson 客户端库通过 Maven 的依赖管理工具进行版本的控制。在 pom.xml 文件中引入 Redisson 的依赖项,并指定版本为 3.12.2,即可使用 Redisson 客户端库的功能。 Redisson 是一个基于 Redis 的分布式 Java 对象和服务框架,它提供了丰富的功能和易于使用的 API,可以方便地与 Redis 数据库进行交互。Redisson 使用了高级的数据结构和算法来优化 Redis 的性能,并提供了分布式的锁、并发处理、分布式对象等功能,使得开发者可以更加方便地使用 Redis 构建分布式应用。 Spring Boot 是一个用于开发独立的、基于生产级别的 Spring 应用程序的框架。它提供了各种扩展和集成,使得开发者能够快速构建可扩展、高性能的应用程序。Spring Boot 2.3.0 版本是其中一个版本,它引入了许多新的功能和改进,并且对 Redisson 客户端库的支持也进行了更新,以保持与 Redisson 的版本兼容。 总结来说,Spring Boot 2.3.0 版本对应的 Redisson 版本是 3.12.2。开发者可以通过在项目的 pom.xml 文件中添加 Redisson 的依赖项,并指定版本为 3.12.2,来使用 Redisson 客户端库的功能。这样可以方便地与 Redis 数据库进行交互,并实现各种分布式应用的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值