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

时间:2017-08-03 08:56:50

标签: tomcat servlets spring-boot intellij-idea spring-boot-devtools

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

为了阻止我每次更改代码时重新运行servlet,我设置了springboot devtools并在下面添加了配置:

我按照这个链接:https://dzone.com/articles/spring-boot-application-live-reload-hot-swap-with(必须改变第一步做同样的事情,但是使用gradle即添加

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

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

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

spring.thymeleaf.cache= false

然后在DEBUG模式下运行tomcat servlet

完成上述所有操作后,这可以通过以下方式实现:当servlet在intellij中运行时 - 你的UI代码更改 - 保存它(在我的情况下我使用的是notepad ++而不是intellij) - 回到intellij(只需将窗口带入焦点) - 然后返回浏览器并刷新浏览器

目前,只有在刷新浏览器之前将Intellij窗口置于焦点时才会应用我的代码更改。有可能设置一些东西,因此intellij不需要关注吗?

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

2 个答案:

答案 0 :(得分:0)

据我所知,这是不可能的。一旦项目建成,Spring引导Devtools就会热重新加载。

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

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

幸运的是,IntelliJ在某些时候同步磁盘中的文件。默认情况下,IntelliJ配置为在框架或编辑器选项卡上激活同步文件,因此一旦打开编辑器,它就会同步文件。

这就是您所遇到的。但是,您无法将同步更改为始终发生,因为这需要相当多的I / O和CPU。有一些插件,如Auto Sync plugin,可以允许您自定义同步发生的时间。

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

答案 1 :(得分:0)

我在一个教程中发现了这一点,这就是你可以做的。

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>