gradlew: 如果 gradle 版本不一致会发生什么错误

gradlew: What wrong can happen if gradle versions is not consistent

我是 gradle 的新手。但我在某种程度上理解为什么鼓励开发人员使用 gradlew 而不是 gradle。然而,如果开发人员使用不同版本的 gradle 来构建他们的项目,情况会更糟吗?归根结底,任何 gradle 版本都会确保项目的依赖关系得到妥善管理。例如,如果 Spring 引导项目依赖于起始插件版本 2.x,无论使用哪个版本的 gradle,构建工具都会确保 2.x 可用

据我所知,使用通用版本 Gradle 的要点是插件兼容性。

Gradle 的内部 API 在最近几个版本中发生了很大变化,因此并非每个插件都适用于每个 Gradle 版本。

例如:SpringBoot 的 2.3.4 参考明确指出它的构建插件需要 Gradle6.3 或更高版本(尽管提到 5.6 以不推荐的形式工作)

https://docs.spring.io/spring-boot/docs/2.3.x/reference/htmlsingle/#getting-started-system-requirements

因此,虽然您可以确定使用了 Spring 引导版本(因为您在构建文件中定义了它),但任何旧版本的 Gradle 都可能 运行 进入异常在尝试构建项目时。

即使您只是使用 Gradle 本身提供的插件,也可能存在兼容性问题。例如 java 配置块是在 Gradle 5(我认为)中首次引入的,因此在早期版本中会导致语法错误。 或者简单的东西,比如 Java 旧版本 Gradle 不支持的版本。

您使用的插件越多,许多 Gradle 版本将能够 运行 它的可能性就越来越小。因此,使用 Gradle Wrapper 是一种让您的构建适用于所有人的简单方法。

从另一个角度来看:如果您是经常维护构建的人,您可以使用包装器使用所有最新的 Gradle 功能,因为您可以确保它不会破坏任何东西。让团队中的每个人都手动更新才能使用功能可能会很痛苦

话虽这么说,但实际上主要是维护问题。如果有人使用他们自己安装的 gradle 版本,就不会发生什么坏事,除非它可能无法正常工作 如果团队中的每个人都使用相似的版本,可能什么都不会发生