场景:为了提高调试时的编译效率,经常在配置tomcat时,会开启热部署。
问题:当鼠标焦点离开idea,就会触发热部署!!但是经常要切换到浏览器或者其他地方去使用,这时就会触发热部署(debug时经常多个hot swap后台任务,导致有时候打了断点也没有效果。)
解决方案:
- 配置 Tomcat 部署方式:
- 在 IntelliJ IDEA 中,打开 Tomcat 服务器的配置。
- 在 "Deployment" 标签页中,确保 "On 'Update' action" 和 "On frame or breakpoint" 选项未被选中。这样,IDEA 就不会在每次更新项目或进入断点时自动触发热部署。
- 调整 HotSwap 设置:
- 回到 IntelliJ IDEA 的设置窗口。
- 选择
Build, Execution, Deployment
->Debugger
->HotSwap
。 - 确保 "Enable HotSwap" 选项是选中的,但你可以考虑取消选中 "Enable on frame or breakpoint" 来避免在断点处触发 HotSwap。
- 使用外部工具窗口:
- 如果你经常需要切换到浏览器或其他应用程序,考虑使用 IntelliJ IDEA 的外部工具窗口(External Tools Window)来运行浏览器,这样焦点就不会离开 IDEA 的主窗口,从而避免触发不必要的 HotSwap。
- 禁用自动构建:
- IntelliJ IDEA 默认会在项目文件发生变化时自动构建项目。你可以通过以下步骤禁用自动构建:
- 选择
File
->Settings
->Build, Execution, Deployment
->Compiler
。 - 取消选中 "Build project automatically" 选项。
- 选择
- 这样,只有当你手动触发构建时(例如通过点击 "Build" 菜单中的 "Build Project"),IDEA 才会编译项目。
- IntelliJ IDEA 默认会在项目文件发生变化时自动构建项目。你可以通过以下步骤禁用自动构建:
- 手动触发部署:
- 当你完成代码更改后,可以手动触发部署,而不是依赖自动部署。这可以通过 IntelliJ IDEA 的 "Update Classes and Resources" 功能来实现,它允许你选择性地更新 Tomcat 服务器上的类和资源。
- 使用更稳定的调试技术:
- 如果 HotSwap 的不稳定性持续影响你的调试体验,你可以考虑使用更传统的调试技术,如使用远程调试(Remote Debugging)功能。这样,你可以将应用程序部署到 Tomcat 服务器上,并使用 IntelliJ IDEA 远程连接到该服务器进行调试,避免在本地环境中触发 HotSwap。
以下截图是本人关闭热部署(Hot Swap)过程截图:
①
②
③Ctrl+Shift+Alt + /
④
⑥