Gradle 包装器拒绝下载和使用 6.7.1 版

如何解决Gradle 包装器拒绝下载和使用 6.7.1 版

我在我的系统 (Mac) 上运行 Gradle 6.2.2,我需要它为我在本地运行的一些关键项目保持在 6.2.2 上。

我刚刚克隆了另一个项目,该项目由其他使用 Gradle 6.7.1 的开发人员维护。这是一个 Spring Boot 应用程序。当我在命令行上运行它的任何 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. 您使用 build.gradle 指令修改 wrapper,指定用于项目的 Gradle 版本
  2. 然后您在命令行上运行 gradle wrapper,Gradle 会为您下载和缓存(某处)该版本的 Gradle
  3. 现在您可以运行普通的 Gradle 命令,但您使用的是 gradle 而不是 gradlew,这告诉 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 的您自己的项目。这样您就不必担心将本地安装的发行版保持在正确的版本中并在它们之间手动切换。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?