首页 > 自考资讯 > 高考百科

为什么Spring官方推荐应用开发使用Gradle?Gradle更优秀是未来 为什么要用spring框架

小条 2024-10-22

Spring 人员发表了文章《Spring/Spring Boot编译工具从Maven迁移到了Gradle》,解释了为什么使用Gradle 来构建Spring (2012) 和Spring Boot (2020) 的源代码。迁移的主要原因是Gradle的构建速度比Maven快得多。

145dc73969e0467cbad634d3aa9c4637~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1730158242&x-signature=si8WNNhYV0kCgjKmaCOQWOpkPqw%3D 最近,生成Spring Boot应用程序项目的网站Spring Initializr(start.spring.io)也开始使用Gradle作为其默认构建工具。

51d93161d5ce44c4b2e940a3e040221b~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1730158242&x-signature=wnGXP1ikWv46QCQdP5bmAUbXw%2Bo%3D 这给习惯使用Maven 的开发人员带来了很多困惑和反对。你做了这个调整吗?

Spring已经在Spring Initializr github Issue中正式给出了答案。请阅读此问题(https://github.com/spring-io/start.spring.io/issues/1012)。

Andy Wilkinson(Spring Boot主要研发)

start.spring.io 该团队相信Gradle 是当今开始新项目的更好的构建系统。对于基于Spring Boot 3.0 的应用程序尤其如此,开发人员可以使用Gradle for AOT 获得更好的体验,这是Spring 6 和Spring Boot 3.0 中的一项颠覆性新功能。我们希望鼓励社区使用Gradle,同时让喜欢Maven 的人只需点击几下即可使用它。

e464f56bf1cf4bbc856bb5a1ac63056a~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1730158242&x-signature=sCbIYTp3xQXqE742IsZccaJp6fE%3DGradle 是一个更好的构建系统

提问者

为什么你认为Gradle 是一个更好的构建系统?在我看来,Maven 更容易使用并且更容易混淆,特别是对于初学者来说。

05b0dc16b43f4cfaa85c6563da1c1bd2~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1730158242&x-signature=mm0Ony3erYmB%2Fskyvy0sD9FZdz4%3D 为什么Gradle 是更好的构建系统

Cdric Champeau(来自Oracle Labs,在Micronaut团队工作)

为什么您认为Gradle 是一个更好的构建系统?

为了能够说出什么是“更好”,你需要获得更好的资格。我并不是说Gradle 绝对更好,但它在很多方面都击败了Maven。在进行比较时,您应该尽量现实。

在我看来,Maven 更容易使用,也更容易混淆,特别是对于初学者来说。

我不同意这个观点,并从几个方面来解释为什么Gradle 客观上比Maven 更好。

首先,我想我们都同意Maven 比Gradle 使用更广泛。

因此,人们习惯性地认为Maven“容易”使用,因为你知道它是一个工具,你知道命令,你习惯阅读POM 文件等。

第二个偏见是Maven 已经存在很长时间了,因此许多流程都是围绕Maven 细节构建的。

难怪有些人很难阻止自己调用mvn clean install 等命令。这是多年使用Maven 工具的结果,如果在安装之前不清理它,Maven 就会变得不可靠。当然,有些人说,“我不需要再打扫了”,但这并不完全正确。

Gradle 是一个完全增量构建系统,因此不存在此类问题。

在Gradle 中,所有内容都声明了输入和输出,因此每次运行命令时,Gradle 都知道要重新运行或不重新运行什么,包括在必要时删除旧文件。

Gradle还提供了Java(和Groovy)的增量编译和避免编译(如果下游项目没有改变则重建)。

一般来说,Gradle 比Maven 快得多,而且Gradle 构建缓存让事情变得更加有趣。

Gradle 还解决了类路径污染等长期存在的问题。

从构建结构的角度来看,最新的Gradle 构建设计明显优于旧版本。 Gradle 通过“优先组合而不是继承”修复了臭名昭著的Maven 单继承模型。

Gradle 还可以对其他插件的应用程序做出反应,使其具有高度的可组合性和可重用性。我没有提到您可以测试构建逻辑本身,这是一个巨大的好处。让我们解释一下Micronaut 如何使用约定插件来确保Micronaut 中的所有项目都配置相同,而不会产生认知开销。项目就是它的本质(BOM),而不是它的构建方式。

Gradle 还关注开发人员的生产力。例如,连续监视源代码更改并立即重新运行任务(编译、测试)的连续模型是游戏规则的改变者。同样,与旧的但优秀的SNAPSHOT 相比,复合构建在集成多个库方面是一个游戏规则改变者。

在依赖管理方面,Gradle 也领先Maven 提供的功能(依赖约束、依赖验证、丰富版本约束、模块替换、变体感知解决方案等),这些可以解决现实世界的问题以及更多。 Android 和Kotlin MPP 等复杂的生态系统。

Gradle 更好的另一个例子是插件作者。正如Andy 所说,作为插件作者,Gradle 没有Maven 生命周期的限制,这让我们的生活变得更轻松。像本机构建这样的复杂主题需要与主要方法有很大的偏差。例如,因为您需要在JVM 模式下运行测试,然后运行本机构建,然后在本机模式下运行测试,并使用该输出。之前的测试等。Gradle 模型显然更适合于此,因为它不需要插件作者编写复杂的代码来进入Maven 来完成工作。 Gradle 更容易。

我知道变革面临很多阻力,但我认为Gradle 就是未来。另外,我永远不会说学习曲线是平坦的。尤其对于那些多年来一直迷恋Maven 的人来说更是如此。 Gradle 的工作方式从根本上不同,但是一旦你习惯了它,就很难再回去了。当然,有些人会从Gradle 回滚到Maven,但这是不可避免的。

简单来说,有人会说Maven比Gradle更好。如果你这样做,请定义“更好”。客观地说,Gradle 在很多方面都比较擅长。就我个人而言,我觉得Maven“更好”。例如,Maven 可以轻松传递属性来覆盖构建中的某些属性。然而,这通常与Gradle 构建的设计方式有关(例如,人们习惯使用Maven 配置文件,但Gradle 根本不需要它们)。或者与Gradle 相比,插件作者的Maven API 的稳定性,Gradle 发展迅速,每年(每个主要版本)都会崩溃一次。这对插件作者来说是一个问题,但对用户来说却不是,因为用户通常不会遇到这个问题。

相比Maven,更喜欢Gradle 的原因有很多,因此我不会进一步解释。最终,你还是选择留在Maven,但我没有。

结语

Gradle 很棒,Gradle 就是未来!Spring Boot 3.0 来了,让我们来了解一下。

感谢您支持我的书《从企业级开发到云原生微服务:Spring Boot实战》。

如有转载,请注明来源:今日头条:卫斯理热爱科学

(此处已添加借书卡,请前往今日头条客户端查看)

版权声明:本文转载于网络,版权归作者所有。如有侵权,请联系本站编辑删除。

猜你喜欢