【发布时间】:2021-01-20 20:26:59
【问题描述】:
我的系统 (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 的理解(如果我错了,请纠正我)是:
- 您使用
wrapper指令修改build.gradle,该指令指定用于项目的 Gradle 版本 - 然后您在命令行上运行
gradle wrapper,Gradle 会为您下载并缓存(某处)该版本的 Gradle - 现在您可以运行普通的 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?
【问题讨论】:
-
您是否尝试过为特定项目运行
./gradlew wrapper --gradle-version 6.7.1 --distribution-type bin?请注意,这是调用gradlew脚本,而不是您的全局gradle二进制文件。
标签: spring-boot gradle sdkman