在后台运行 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 窗口)的主要内容,如果未能解决你的问题,请参考以下文章