运行Spring Security JWT登录示例项目时Gradle无法获取Spring Boot 3.0.0-M1版本的问题求助
我来帮你排查这个问题——你遇到的核心问题是Gradle找不到Spring Boot 3.0.0-M1的插件,这是因为插件仓库和项目依赖仓库是分开配置的,你只给项目依赖加了Spring的里程碑仓库,却没给插件查找环节配置对应的仓库。另外,当前的dependency-management插件版本也和Spring Boot 3.0.0-M1不兼容,需要同步调整。
1. 配置插件仓库
Gradle查找插件时默认只会从gradlePluginPortal和mavenCentral拉取,但Spring Boot的里程碑(Milestone)版本插件并不在这两个默认仓库里,你需要手动把Spring的专属仓库添加到插件配置中,有两种方式:
方式一:修改settings.gradle(推荐)
在项目根目录的settings.gradle文件中添加pluginManagement配置(如果文件不存在就新建一个):
pluginManagement { repositories { gradlePluginPortal() mavenCentral() maven { url 'https://repo.spring.io/milestone' } maven { url 'https://repo.spring.io/snapshot' } } }
方式二:在build.gradle中添加pluginRepositories块
直接在你的build.gradle顶部添加插件仓库配置:
pluginRepositories { gradlePluginPortal() mavenCentral() maven { url 'https://repo.spring.io/milestone' } maven { url 'https://repo.spring.io/snapshot' } }
2. 适配dependency-management插件版本
Spring Boot 3.x系列需要搭配更新版本的dependency-management插件,把你当前的版本从1.0.11.RELEASE改成1.1.0-M1:
plugins { id 'org.springframework.boot' version '3.0.0-M1' id 'io.spring.dependency-management' version '1.1.0-M1' // 这里修改版本 id 'java' }
3. 验证与调试
修改完成后,重新同步Gradle。如果还是有问题,可以执行以下命令查看详细日志,确认仓库是否被正确加载:
./gradlew build --info
从日志里你能看到Gradle尝试从哪些仓库查找插件,方便进一步排查。
补充说明
Spring Boot的里程碑、快照版本都属于预发布版本,不会上传到mavenCentral,所以无论是插件还是依赖,都需要明确指定Spring的专属仓库(milestone/snapshot)才能拉取到。而正式版(比如2.6.6)会同步到mavenCentral,所以你之前改版本后能正常运行。
内容的提问来源于stack exchange,提问作者Sophie Bushchak

