Spring Boot开始改用Gradle构建

Spring Boot团队称从2.3.0M1开始改用Gradle执行构建,以减少构建时间加快开发和测试反馈。

采用maven构建的项目在开发和测试反馈环路的长度大到令人沮丧,消耗的时间增加了修复 Bug和实现新功能的时间。

Spring Boot本身的构建非常复杂,尤其是使用Invoker插件。

Spring Boot团队将构建分成四部分来解决CI问题,先构建项目的核心,然后并行建造三个独立的部分。但CI构建仍然花了一个小时甚至更长时间,由于拆分结构特定于CI构建,因此,并没有加快开发人员的本地构建。

Gradle具有构建结构的广泛模型,了解每个任务的输入和输出及相互依赖性。这种建模承诺,能够并行运行任务,同时支持增量、缓存或完全不使用。

换句话说,Gradle旨在最大限度地减少构建特定更改所需的工作量,能够并行执行。Gradle未能成为构建工具业界第一的原因,在于它的构建与Maven之类的构建更难维护和理解。

但Gradle的灵活性允许使用不同的微妙方式完成操作。

Spring Boot一个核心的功能是约定配置,Spring Boot团队将此方法应用于构建上。Spring Boot团队在减少项目构建时间方面,迁移到Gradle无疑是成功的。

在CI和开发人员的机器上,基于Maven的完整构建需要一个小时或更长时间。在Gradle的平均成功构建时间为9分22 秒。

结论

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