Intellij IDEA关闭热部署(Hot swap)

场景:为了提高调试时的编译效率,经常在配置tomcat时,会开启热部署。

问题:当鼠标焦点离开idea,就会触发热部署!!但是经常要切换到浏览器或者其他地方去使用,这时就会触发热部署(debug时经常多个hot swap后台任务,导致有时候打了断点也没有效果。)

解决方案:

  1. 配置 Tomcat 部署方式
    • 在 IntelliJ IDEA 中,打开 Tomcat 服务器的配置。
    • 在 "Deployment" 标签页中,确保 "On 'Update' action" 和 "On frame or breakpoint" 选项未被选中。这样,IDEA 就不会在每次更新项目或进入断点时自动触发热部署。
  2. 调整 HotSwap 设置
    • 回到 IntelliJ IDEA 的设置窗口。
    • 选择 Build, Execution, Deployment -> Debugger -> HotSwap
    • 确保 "Enable HotSwap" 选项是选中的,但你可以考虑取消选中 "Enable on frame or breakpoint" 来避免在断点处触发 HotSwap。
  3. 使用外部工具窗口
    • 如果你经常需要切换到浏览器或其他应用程序,考虑使用 IntelliJ IDEA 的外部工具窗口(External Tools Window)来运行浏览器,这样焦点就不会离开 IDEA 的主窗口,从而避免触发不必要的 HotSwap。
  4. 禁用自动构建
    • IntelliJ IDEA 默认会在项目文件发生变化时自动构建项目。你可以通过以下步骤禁用自动构建:
      • 选择 File -> Settings -> Build, Execution, Deployment -> Compiler
      • 取消选中 "Build project automatically" 选项。
    • 这样,只有当你手动触发构建时(例如通过点击 "Build" 菜单中的 "Build Project"),IDEA 才会编译项目。
  5. 手动触发部署
    • 当你完成代码更改后,可以手动触发部署,而不是依赖自动部署。这可以通过 IntelliJ IDEA 的 "Update Classes and Resources" 功能来实现,它允许你选择性地更新 Tomcat 服务器上的类和资源。
  6. 使用更稳定的调试技术
    • 如果 HotSwap 的不稳定性持续影响你的调试体验,你可以考虑使用更传统的调试技术,如使用远程调试(Remote Debugging)功能。这样,你可以将应用程序部署到 Tomcat 服务器上,并使用 IntelliJ IDEA 远程连接到该服务器进行调试,避免在本地环境中触发 HotSwap。

以下截图是本人关闭热部署(Hot Swap)过程截图:

③Ctrl+Shift+Alt +  /

### 如何在 IntelliJ IDEA 中禁用自动热部署 在开发环境中,Spring Boot 的 DevTools 提供了自动重启和热部署的功能,这有助于开发者快速看到更改的效果。然而,在某些情况下,这种功能可能会带来不必要的干扰或性能开销,因此可以考虑禁用它。 #### 方法一:通过修改 `application.properties` 或 `application.yml` 可以通过配置文件来控制 DevTools 的行为。具体来说,可以在项目的 `application.properties` 文件中添加以下属性: ```properties spring.devtools.restart.enabled=false ``` 如果使用的是 YAML 配置,则可以这样写: ```yaml spring: devtools: restart: enabled: false ``` 此设置将禁用 Spring Boot DevTools 的自动重启功能[^1]。 #### 方法二:通过 VM 参数禁用 DevTools 另一种方式是在运行应用时通过 JVM 参数禁用 DevTools 功能。可以在 IntelliJ IDEA 的运行/调试配置中添加如下参数: ```bash -Dspring.devtools.restart.enabled=false ``` 操作步骤如下: 1. 打开 IntelliJ IDEA。 2. 转到 **Run -> Edit Configurations...**。 3. 在弹出窗口中找到对应的运行配置。 4. 在 **VM options** 字段中输入 `-Dspring.devtools.restart.enabled=false`。 完成以上设置后,DevTools 将不会触发任何自动热部署的行为[^1]。 #### 方法三:移除 DevTools 依赖 如果不打算使用 DevTools 的任何特性,可以直接将其从项目中移除。对于 Maven 用户而言,只需删除 `pom.xml` 文件中的相关依赖即可;而对于 Gradle 用户,则应确保未引入 `spring-boot-devtools` 这个库。 Maven 示例: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <!-- 移除此依赖 --> </dependency> ``` Gradle 示例: ```gradle // 注释掉或移除该行 implementation 'org.springframework.boot:spring-boot-devtools' ``` 需要注意的是,Gradle 并不原生支持 optional 属性,所以如果有类似的场景需求,建议查阅第三方插件如 propdeps-plugin 来实现更精细的管理。 #### 方法四:调整 IDE 设置 除了针对 DevTools 自身的操作外,还可以进一步优化 IntelliJ IDEA 的编译选项以减少对热部署的支持程度。进入 **File -> Settings -> Build, Execution, Deployment -> Compiler** 页面,取消勾选 **Build project automatically** 复选框。这一改动能够阻止后台持续构建过程的发生,从而间接抑制热更新机制的影响。 --- ### 总结 综上所述,有多种途径可供选择用来关闭 IntelliJ IDEA 下基于 Spring Boot 的自动热部署功能。无论是借助于配置文件、虚拟机参数还是直接剔除对应组件的方式都能达到预期效果。最终采取哪种方案取决于实际应用场景以及个人偏好。 ```python # 示例代码片段展示如何读取环境变量确认状态 import os def check_devtools_status(): status = os.getenv('spring.devtools.restart.enabled', 'true') return True if status.lower() == 'true' else False print(f"Is DevTools Restart Enabled? {check_devtools_status()}") ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值