Gradle wrapper 拒绝下载和使用 6.7.1 版

Gradle wrapper is refusing to download and use version 6.7.1

我的系统上有 Gradle 6.2.2 运行ning (Mac),我 需要 它才能保持在 6.2。 2 用于我在本地 运行 的一些关键项目。

我刚刚克隆了另一个项目,该项目由其他都在使用 Gradle 6.7.1 的开发人员维护。这是一个 Spring 启动应用程序。当我在命令行上 运行 它的任何 Gradle 命令时,我得到:

> Failed to apply plugin [id 'org.springframework.boot']
   > Spring Boot plugin requires Gradle 5 (5.6.x only) or Gradle 6 (6.3 or later). The current version is Gradle 6.2.2

所以它 看起来 像 Spring Boot 要我在 Gradle 6.3+.

我对 Gradle Wrapper 的 理解 是:

  1. 您使用 wrapper 指令修改 build.gradle,该指令指定 Gradle 的哪个版本用于项目
  2. 你然后 运行 gradle wrapper 在命令行上 Gradle 为你下载和缓存那个版本的 Gradle
  3. 现在您可以 运行 您的普通 Gradle 命令,但是您使用 gradlew 而不是 gradle,这告诉 Gradle 使用以下版本Gradle 在包装指令中指定

如果有任何不正确或误导,请先纠正我!假设它或多或少是正确的...

我在项目的build.gradle中添加了以下指令:

wrapper{
    gradleVersion = '6.7.1'
    distributionType = Wrapper.DistributionType.BIN
}

我的希望是,尽管我在我的系统上本地使用 6.2.2,这将告诉 Gradle 获取并使用我们知道与其他版本兼容的 Gradle v6.7.1项目的构建。

然后我在命令行上从项目根目录转到 运行 gradle wrapper

$ gradle wrapper

FAILURE: Build failed with an exception.

* Where:
Build file '/Users/myuser/workspace/the-new-project/build.gradle' line: 27

* What went wrong:
An exception occurred applying plugin request [id: 'org.springframework.boot', version: '2.3.2.RELEASE']
> Failed to apply plugin [id 'org.springframework.boot']
   > Spring Boot plugin requires Gradle 5 (5.6.x only) or Gradle 6 (6.3 or later). The current version is Gradle 6.2.2

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 702ms

关于这里发生的事情有什么想法吗? 我如何告诉 Gradle 下载和使用 6.7.1 但不要触及我的本地版本 6.2。 2?

您对包装器的理解是正确的(尽管对于第 1 点,您也可以在命令行中指定版本和类型,或者通过省略它们来依赖默认值)。

如果项目尚未使用包装器脚本(项目根目录中没有 gradlew 文件),您需要手动 download 分发的兼容版本。使用它来生成包装器脚本,然后从那时起,始终使用 gradlew 来构建项目。如果您愿意,可以在之后删除手动下载的一个。这不会影响您自己安装的旧版本。

如果实际上已经有一个包装脚本,但它被配置为不兼容的版本,那么只需手动更改文件中的版本gradle/wrapper/gradle-wrapper.properties。之后一定要 运行 wrapper 任务以获取实际脚本的更新(如果有的话)。

您还应该考虑将包装器用于您自己需要旧版本 6.2.2 的项目。这样你就不必担心将本地安装的发行版保持在正确的版本并在它们之间手动切换。