开发阶段Gradle构建含DevTools的Spring Boot JAR遇到404错误如何解决
解决方案
你遇到的404错误核心是两种原因:要么DevTools没有被正确打入运行的Jar包,要么容器内的Spring应用没有启用DevTools远程服务端点,按以下步骤调整即可:
1. 调整Gradle打包配置
Spring Boot Gradle插件默认会在打包时排除DevTools,你需要在build.gradle(Groovy语法)中添加以下配置:
// 确保bootJar打包时保留DevTools bootJar { excludeDevTools = false } // 同步配置bootBuildImage,构建镜像时保留DevTools bootBuildImage { excludeDevTools = false }
如果你使用Kotlin DSL(build.gradle.kts),对应配置如下:
tasks.bootJar { excludeDevTools.set(false) } tasks.bootBuildImage { excludeDevTools.set(false) }
2. 配置DevTools远程密钥
Spring DevTools的远程端点默认不会启用,必须配置spring.devtools.remote.secret参数才会激活,你可以在docker-compose.yml中为容器注入对应环境变量:
services: 你的服务名: image: 你构建的Spring Boot镜像名称 ports: - 8080:8080 environment: # 和本地IDEA配置的密钥保持一致即可 - SPRING_DEVTOOLS_REMOTE_SECRET=自定义的开发密钥
3. 调整IntelliJ运行配置
你已经将主类设置为org.springframework.boot.devtools.RemoteSpringApplication,还需要补充两个配置:
- 程序实参(Program arguments)填写远程服务的访问地址,例如
http://localhost:8080 - VM选项(VM options)添加参数
-Dspring.devtools.remote.secret=你自定义的开发密钥,和容器内配置的密钥完全一致
验证流程
配置完成后按顺序执行以下操作验证:
- 重新执行
./gradlew bootBuildImage构建新镜像 - 重启docker-compose服务
- 启动IntelliJ的RemoteSpringApplication进程
- 修改代码后按
Ctrl+F9(Windows)/Command+F9(Mac)触发生成,即可完成热重载
注意事项
该配置仅适用于开发环境,禁止在生产环境打包引入DevTools或开启远程端点。
内容的提问来源于stack exchange,提问作者Nikola Stojaković
相关产品推荐
相关产品推荐

