Spring Boot DevTools与Gradle兼容异常:修改无法实时生效求助
Spring DevTools 代码更新不生效的排查方案
1. 确认Gradle依赖配置是否正确
得确保build.gradle里的DevTools依赖是runtimeOnly,别写错成compile或者implementation:
dependencies { runtimeOnly 'org.springframework.boot:spring-boot-devtools' }
另外检查自动重启配置,别把你修改的代码目录加到排除列表里:
spring: devtools: restart: enabled: true exclude: static/**, public/**
2. 检查IDE自动编译开关
- IntelliJ IDEA:打开
Settings > Build, Execution, Deployment > Compiler,勾选Build project automatically;再按Ctrl+Shift+A搜Registry,找到compiler.automake.allow.when.app.running勾上。 - Eclipse:打开
Window > Preferences > General > Workspace,勾选Build automatically。
3. 验证classpath是否真的更新
改完代码后手动点下IDE的Build按钮,或者执行gradle build,看控制台有没有DevTools的重启日志:Reloading classes changed [...]。要是没有,说明代码没编译到classpath,检查IDE编译输出目录和Spring Boot读取的是否一致。
4. 排查自定义类加载器干扰
如果项目里有自定义ClassLoader的代码,先注释掉试试——有些第三方框架或自定义类加载策略会绕过DevTools的重启机制。
5. 静态资源热加载的特殊处理
如果改的是static/public下的静态文件,DevTools默认不触发重启,靠LiveReload刷新页面:
- 浏览器装个LiveReload插件(比如Chrome的LiveReload扩展)并启用。
- 确保配置里没禁用LiveReload:
spring: devtools: livereload: enabled: true
6. 清理Gradle缓存
执行gradle clean build --no-build-cache清空缓存后重新构建,旧缓存有时候会导致代码没同步到classpath。
内容的提问来源于stack exchange,提问作者Lightz
相关产品推荐
相关产品推荐

