我这里有几个 java 的 web 工程. maven 的
这个工程是个老工程, 没用 springboot, 自然也没用 dev-tools 热部署 debug 时跑在外部的 tomcat 上.
这样勾上后, 启动调试会打开一个 chrome 浏览器, idea 里 js 文件里打的断点能进去.
但是如果我刷新了, 或者浏览器关了, 这个断点就不生效, 必须重启 tomcat 等待 idea 自动唤醒浏览器, 不然断点没用. 就很麻烦.
如果我这样, 直接对着 html 文件右键单击, 选择 debug, 也会打开同样的网址的 javascript 的 debug 模式 但是同样的断点是没用的.
还有个问题就是按 ctrl+F9 只会热部署 class, 不会部署静态文件. 必须手动重启 tomcat 或者选择重新部署才行. 浏览器缓存也要刷新(或者开着 F12,勾上禁用和缓存的设置) 我这边还有一个项目是跑在 springboot 上的, 加了 dev-tools, 发现 ctrl+F9 编译模块后, 静态文件也重新加载了. 就很方便. 在非 springboot 工程上怎么能达到类似的效果?
1
tedzhou1221 2021-12-17 17:57:32 +08:00
把图 2 中的 on 'Update' action 和 On frame deactivation 两个下拉框都选择为 update class and resources
|
2
tedzhou1221 2021-12-17 17:59:55 +08:00
还有就是,如果用 dev-tools ,还不如用 Jrebel 。如果你有特殊的自定义热加载的东西,Jrebel 有提供自定义接口给你去实现(由于我能力不够,所以没有实现)
|
3
tedzhou1221 2021-12-17 18:01:04 +08:00
如果使用的是 Mybatis 框架,可以去找找 mybatis-plus 的源码,他们有实现热更新 Mapper 的 xml 功能。
|
4
chengyiqun OP @tedzhou1221 ![image.png]( https://s2.loli.net/2021/12/18/oJtv8CYrHyaTPlI.png)
只有 update class, 没有 update class and resources, 我不知道为什么. Jrebel 我也用过, mybatis-plus 用不到, 我主要不是为了热部署 class 和 xml, 而是 webapp 目录里的静态文件. 最大的问题就是在 idea 里点了断点, 调试是不生效的. |