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

Posted

技术标签:

【中文标题】在后台运行 Intellij/Tomcat/SpringBoot DevTools(即不关注 IntelliJ 窗口)【英文标题】:Run Intellij/Tomcat/SpringBoot DevTools in background (i.e. no focus on IntelliJ window) 【发布时间】:2018-01-10 18:39:32 【问题描述】:

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

为了避免每次更改代码时都重新运行 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

THEN 在调试模式下运行 tomcat servlet 时

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

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

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

【问题讨论】:

如果你只是使用 IntelliJ 会不会更容易?但是要回答您的问题,这可能是不可能的。您遵循的链接使您配置 IntelliJ,以便在检测到更改时自动生成。 但是,IntelliJ 很可能只会在 IntelliJ 本身发生更改时检测到更改。它会不时从磁盘重新加载,但我想这只会在窗口处于活动状态以减少 CPU 和 I/O 使用时发生。如果您直接在 IntelliJ 本身中进行更改,则不会出现此问题。 【参考方案1】:

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

在 IntelliJ 中,项目不会自动重建,但可以通过启用 Build project automatically (compiler.automake.allow.when.app.running) 进行配置。

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

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

这就是你正在经历的。但是,您不能将同步更改为始终发生,因为这需要相当多的 I/O 和 CPU。有一些像 Auto Sync plugin 这样的插件可以让您自定义同步发生的时间。

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

【讨论】:

啊,这很有道理。我不想使用 IntelliJ 的主要原因是因为它似乎非常占用 RAM。如果我打开了很多文件,我希望它会冻结 @user3120554 在这种情况下,您可能想要寻找更轻量级的 Java 编辑器,或者是否可以在 Notepad++ 中执行此操作。基本上,您所需要的只是一个良好的集成,一旦您更改某些内容,它将重新构建源文件。【参考方案2】:

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

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>

【讨论】:

以上是关于在后台运行 Intellij/Tomcat/SpringBoot DevTools(即不关注 IntelliJ 窗口)的主要内容,如果未能解决你的问题,请参考以下文章

怎么设置电脑后台运行?

什么是后台运行

linux centos程序后台运行

后台任务永远运行?

Linux命令后台运行

代码笔记后台运行,可以选择在前台或后台或前后台