运行 Intellij/Tomcat/SpringBoot DevTools 在后台(即不关注 IntelliJ window)

Run Intellij/Tomcat/SpringBoot DevTools in background (i.e. no focus on IntelliJ window)

我有一个网络应用程序。我主要使用记事本++进行开发。我需要使用 Intellij 来 运行 两个 Tomcat servlet。我的理想设置是 运行 IntelliJ 中的两个 serlet,然后最小化并且不再使用 intellij(即在记事本 ++ 中进行更改,保存。然后刷新浏览器选项卡)。

为了避免每次更改代码时都必须重新运行 servlet,我设置了 springboot devtools 并添加了以下配置:

我遵循了这个 link:https://dzone.com/articles/spring-boot-application-live-reload-hot-swap-with(不得不改变第一步来做同样的事情但是使用 gradle 即添加

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

到 gradle.build(正确的,不是随机的)。

然后在完成 link 的其余步骤后,将此行添加到 application.properties:

spring.thymeleaf.cache= false

THEN 当 运行在 DEBUG 模式下运行 tomcat servlet

完成上述所有操作后,它的工作原理是:当 servlet 在 intellij 中 运行ning - 更改 UI 代码 - 保存它(在我的例子中,我使用的是记事本 ++ 而不是 intellij - 返回 intellij(只需将 window 置于焦点) - 然后返回浏览器并刷新浏览器

目前,只有当我在刷新浏览器之前将 Intellij window 置于焦点时,我的代码更改才会应用。是否可以设置一些东西使 intellij 不需要聚焦?

即打开 intellij,运行 我的两个 servlet,然后最小化它,再也不要碰它。我想忽略它并继续使用我的浏览器和记事本++进行开发工作

据我所知这是不可能的。 Spring 启动 Devtools 将在项目构建后立即热重新加载。

在 IntelliJ 中,项目不会自动重建,但这可以通过启用 自动构建项目 (compiler.automake.allow.when.app.running).

来配置

但是,即使您启用了它,IntelliJ 也只会在检测到更改时自动构建它。如果您在 IntelliJ 中更改文件,这将被视为更改。但是,当您在其他编辑器(如 Notepad++)中更改文件时,它不会。

幸运的是,IntelliJ 会在特定时间从磁盘同步文件。默认情况下,IntelliJ 配置为在框架或编辑器选项卡激活时同步文件,因此它会在打开编辑器后立即同步文件。

这就是您遇到的情况。但是,您不能将同步更改为始终发生,因为这需要相当多的 I/O 和 CPU.There 是一些插件,例如 Auto Sync plugin,它们可以让您自定义同步发生的时间。

或者,如果您在 IntelliJ 中(而不是在 Notepad++ 中)编辑文件,则不需要同步,因此您不会遇到此问题。

我在一个教程中找到了这个,这就是你可以做的..

Settings --> Build-Execution-Deployment --> Compiler --> enable "Make Project Automatically".
Restart IntelliJ.

在早期版本的 IntelliJ 中

Press ctrl+shift+A and search for the registry. Enable following configuration compiler.automake.allow.when.app.running

阅读: https://dzone.com/articles/spring-boot-application-live-reload-hot-swap-with

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