【问题标题】:Spring boot devtools - Static content reloading does not work in IntelliJSpring Boot devtools - 静态内容重新加载在 IntelliJ 中不起作用
【发布时间】:2016-06-24 01:43:51
【问题描述】:

在构建我的第一个 Spring Boot 应用程序时,我发现每次更改 /resources/static/some-file.js 中的 Javascript 文件时都需要重新启动应用程序

这非常耗时。

当我将文件移动到 /webapps/ 文件夹时,它按预期工作,但文件未打包在 JAR 中。文档提到了这一点,所以我不能继续这样下去。

我阅读了有关 spring-boot-devtools 的所有信息,并将其安装在我的 POM 中,但热交换无法正常工作。我仍然需要重新启动整个应用程序才能看到 Javascript 或 CSS 文件更改。

当应用程序启动时,我可以看到LiveReload server is running on port 35729 行,所以spring-boot-devtools 一定在做某事......

进一步调查出了什么问题的步骤是什么?

我的猜测是,当 IntelliJ 运行应用程序时,文件会被复制,所以当我进行更改时,我实际上是在更改原始文件,而不是正在运行的应用程序使用的文件。

PS:我将 Maven、IntelliJ IDEA 15 和 Spring Boot 1.3.3 与嵌入式 Tomcat 服务器一起使用。我不确定 IntelliJ 运行什么命令来启动应用程序。 IDE 正在“自动”处理这个问题。也许我需要更改我的运行配置?

【问题讨论】:

  • 这是一个 Spring Boot 项目吗?在 Spring Boot 中,默认情况下 src/main/resources/templates 是视图所在的位置,而不是 webapps 文件夹。请发布 pom.xml
  • 我的文件在正确的位置。当我注意到热交换不起作用时,我才尝试移动它们。在意识到无法保留“webapps”文件夹后,我将文件返回到原来的位置。
  • 好视频如何在 IDEA 中工作:youtube.com/watch?v=VWF7vCJSqrA
  • 但是在这两个步骤之后,即使我没有编辑任何文件,ide 也正在编译。

标签: java spring intellij-idea spring-boot


【解决方案1】:

您需要在 IntelliJ 中打开一些功能才能完成这项工作。

首先,有一个项目特定的设置,您需要将其应用于您想在其中使用 devtools 的任何项目。转到 Preferences > Compiler 并启用“Make project automatically”。

下一个设置是适用于所有项目的 IDEA 注册表设置。

  • 在 macOS (OSX) 中,按 Shift+Command+A(在 Windows 中为 Shift+Ctrl+A
  • 在出现的搜索框中输入“注册表”,然后选择注册表将其打开。
  • 查找 compiler.automake.allow.when.app.running 并启用它。

之后,重新启动您的应用。您会注意到项目会随着您所做的每一次更改而不断重建。当您在浏览器中查看结果时,您会看到静态文件和代码都已更新。

【讨论】:

  • 在 Windows 上:按 Ctrl-Alt-Shift-/ 并从出现的菜单中选择“注册表”。
  • 相当不错。对我来说,最终的解决方案是网络服务器重启只在我保存源文件时发生,而不是自动发生。对此进行调查。
  • 对于当前版本的 IntelliJ 是:Ctrl+Shift+A 并写Registry
  • 遗憾的是,如果您使用 webpack 并观看,这将不起作用。在这种情况下,您必须始终进入 bundle.js 文件并手动编辑它(即通过在某处添加空格)...
  • 我没有在注册表中看到 compiler.automake.allow.when.app.running。我正在使用 intellij 社区版 2018.1。请帮忙
【解决方案2】:

对于 Windows 用户,步骤如下:
1) 转到文件->设置,然后转到“构建、执行、部署”->编译器并启用“自动生成项目”标志。
2) 按 Ctrl-Alt-Shift-/ 并从出现的菜单中选择“注册表”。启用 compiler.automake.allow.when.app.running 标志。
3)启动/重新启动应用程序并观察静态内容重新加载。

【讨论】:

【解决方案3】:

对于IntelliJ 2021.2 或更高版本,以下是您需要遵循的步骤

  1. 添加 spring-boot-devtools 依赖项(如果尚未添加)。

  2. 启用自动构建项目如下图

  1. 高级设置中启用选项如下所示

【讨论】:

  • 这似乎不适用于 application.properites 更改。这个解决方案是否也适用于静态文件?
【解决方案4】:

在 Linux 上,按:

Ctrl-Alt-Shift-/

【讨论】:

    【解决方案5】:

    对于 mac 用户,我必须按 Command + Shift + A

    并在 Step1 和 Step2 之后重新启动 INTELLIJ,否则注册表选项不会出现。

    【讨论】:

      【解决方案6】:

      您可以像下面这样使用:

      1. 首先 打开 Preferences.../Settings... -> Build, Execution, Deployment -> Compiler 并允许自动构建项目。图片看起来像

      1. 第二,我们更改注册表配置。对于 ma​​cOS,请按 command+shift+A,或者如果您使用的是 Windows,请按 Ctrl+Shift+A,然后搜索注册表。 启用 compiler.automake.allow.when.app.running。图片如下所示

      注册表图像看起来像..

      compiler.automake.allow.when.app.running 启用图片的样子

      然后享受..

      【讨论】:

        【解决方案7】:

        该选项现在位于高级设置中:

        【讨论】:

        • 这似乎是 this other 答案的副本,但信息较少
        猜你喜欢
        • 2018-08-29
        • 2021-10-28
        • 1970-01-01
        • 2019-07-23
        • 2017-03-25
        • 2017-04-05
        • 2017-07-19
        • 2020-04-27
        • 1970-01-01
        相关资源
        最近更新 更多