【问题标题】:IntelliJ IDEA spring boot hot reload on manual save?IntelliJ IDEA spring boot hot reload on手动保存?
【发布时间】:2017-03-30 22:52:56
【问题描述】:

我的目标是:

  1. 在 IntelliJ IDEA 中为 Spring Boot 项目禁用自动保存

  2. 手动保存文件时始终热重载项目

在我看来,这两个目标不可能同时实现。

我可以通过修改这些设置来禁用 IntelliJ IDEA 中的自动保存:

构建、执行、部署 -> 编译器取消选中自动构建项目

另外我认为需要修改这些选项:

外观和行为 -> 系统设置取消选中同步下的两个保存文件(帧停用和自动保存文件)

我可以在 Mkyong 的帮助下启用热重载:Mkyong-help 正如您从链接中看到的那样,它需要设置“自动构建项目”。如果我同时执行这两个步骤,那么应用程序将始终在编辑时保存,并且始终热重新加载应用程序。

这太令人沮丧了,我认为 IntelliJ IDEA 是一个很好的现代 IDE,像热重载这样的工业核心功能很容易处理吗?

问题是,我真的不想在每次更改文件时都热重新加载我的应用程序!因为那样它将不断地热重新加载,这将最会破坏应用程序的时间。只是如此不必要和浪费资源。当我手动保存文件时,我想总是热重载,这是许多其他编辑器的标准。这个问题必须有解决方案,因为人们希望为他们的开发提供合理的热重载。

【问题讨论】:

  • 如何分配Build | Build Project 到 Ctrl+S?

标签: java spring intellij-idea spring-boot


【解决方案1】:

据我了解,您的问题是您希望 spring 服务器在您进行更改时自动重新加载,然后手动保存它们。正确的?如果是这样,请按照我的步骤操作,希望你会得到想要的。

1。包括 spring-boot-devtools 依赖项

Maven

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

分级

dependencies {
    compile("org.springframework.boot:spring-boot-devtools")
}

2。在编译器首选项中启用“自动生成项目”以使自动重启工作。

3。在 IntelliJ 中启用 compiler.automake.allow.when.app.running 注册表设置。您可以使用快捷方式Shift+Command+A 在 IntelliJ 中访问注册表,然后搜索注册表。


当您手动保存更改时,第三步将自动构建您的项目(make project)。

================================================ ========================== 一旦通过您的 IDE 手动保存更改,这些步骤将强制 spring 服务器重新启动。但是,即使重新启动服务器,每次进行更改时都需要刷新浏览器。要强制您的浏览器也自动刷新,您需要在浏览器中安装一个名为 Live Reload 的扩展程序。检查此链接http://livereload.com/extensions/。该链接将向您展示如何安装此扩展程序,具体取决于您的浏览器。

【讨论】:

  • 这对我有用,但我觉得在我点击Cmd+S 保存后触发它会有一些延迟。减少这些注册表设置是否有任何延迟?
  • 不知道如何打开注册表设置的朋友,参考stackoverflow.com/questions/28415695/…
  • 如果您使用的是 OS X,您可以通过键入“cmd + shift + A”打开注册表。键入“注册表”并更改您要查找的选项的值。
  • @Mirceac21 在注册表设置中有compiler.automake.trigger.delay。请检查这是否有帮助
  • 我知道这是一个老问题.. 但是。在 IntelliJ 的当前版本中,“compiler.automate...”注册表设置不再可用。有人知道新选项吗?
【解决方案2】:

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
  • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。
【解决方案3】:

下面是一个简单的工作流程,在 IDEA Ultimate Edition 中对我很有效,并且当代码热交换时不会重新启动应用程序的某些部分

1。安装 Spring Boot 开发者工具

2。创建正确的 Spring Boot 运行配置

这里的关键步骤是将On 'Update' action 设置为Hot swap classes and update trigger file if failed 这是工具提示对各种选项的解释。只指定Update classes or resources 会起作用,但是会重新加载应用程序的某些部分,但比从头开始应用程序要快得多。见Restart vs Reloadsection of the documentation for an explanation

3。以调试模式运行您的 Spring Boot 应用程序Shift + F9

4。更改一些 java 文件或静态内容,然后按CTRL + F10

它将更新您刚刚更改的类和资源。为了获得良好的效果,请禁用浏览器的缓存以避免看到旧版本的静态资源。

5。编辑模板

如果您使用模板引擎,文档会提供有关 how to reload them without restarting the container 的说明

6。 (可选)使用 LiveReload 触发浏览器刷新

Spring Boot 开发者工具contain a LiveReload server 可帮助您在内容更改时触发浏览器重新加载。

【讨论】:

    【解决方案4】:

    我正在使用社区版的以下版本

    IntelliJ IDEA 2021.2.2(Community Edition)

    以下是我在手动保存时为热重载执行的步骤。

    第 1 步 在 Maven 依赖 pom.xml

    中添加 spring-boot-dev-tools 依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
    

    第 2 步
    Compiler Configuration for picking build Automatically

    第 3 步
    Advance Compiler Setting for Restart on Manual Save

    【讨论】:

      猜你喜欢
      • 2019-01-04
      • 1970-01-01
      • 2018-10-15
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      • 2016-03-29
      • 2016-12-28
      • 1970-01-01
      相关资源
      最近更新 更多