Spring boot devtools – 静态内容重新加载在IntelliJ中不起作用

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

这非常耗时。

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

我读了所有关于spring-boot-devtools ,并将它安装在我的POM中,但是hotswapping并没有接缝工作。 我仍然需要重新启动整个应用程序以查看Javascript或CSS文件更改。

当应用程序启动时,我可以看到LiveReload server is running on port 35729 ,所以spring-boot-devtools必须做一些事……

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

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

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

您需要在IntelliJ中启用一些function才能使其工作。

首先,有一个项目特定设置,您需要在任何想要使用devtools的项目中应用。转到首选项>编译器并启用“自动生成项目”。

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

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

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

不久前我还写了一篇关于此的博客文章。 http://patrickgrimard.com/2016/01/18/spring-boot-devtools-first-look/

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

对于mac用户,我不得不按下Command + Shift + A.

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

在Linux上,按:

CtrlAltShift/