我希望在我的类更新时 Spring Boot 自动重新启动服务器。我已经看到以下答案:
Spring Boot 如何在不重新启动服务器的情况下加载代码中的更改
我的pom文件有以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
我在 Intelij 中启用了以下设置:
还有:
当我现在启动服务器时,我得到以下信息:
日志中的通知:
2021-12-18 15:18:42.624 INFO 4204 --- [重新启动Main] o.s.b.d.a.OptionalLiveReloadServer :LiveReload 服务器是 在端口 35729 上运行
但是现在,当我对主要方法所在的包中的任何文件和子包(例如:测试控制器)进行更改时,我的服务器不会重新加载。
有什么想法可以解决这个问题吗?
正如IntelliJ 版本比较所示,社区版不“支持”:
Spring、Jakarta EE、Java EE、Micronaut、Quarkus、Helidon 等...
我们可以(有点难看,因为异常“飞翔”,重启发生(至少)2次..取决于构建/编译需要多长时间)“黑客”。
运行 maven
spring-boot:run
配置,我们可以:
mvn process-classes
(或“触及类路径”的东西)。我在 macOS 12.7.4 上使用 IntelliJ IDEA 2024.1(社区版),它对我有用,尽管它并不适用于每次更改。例如,如果删除空格,它不会重新启动服务器,但如果添加空格或实际语句,它会重新启动服务器,这很好。重新加载也需要几秒钟的时间。
我的
pom.xml
中已经有了开发工具依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
但是,热重载仍然不起作用。
为了让它发挥作用,我必须做OP也做的事情。请参阅下面的屏幕截图。
所以也许如果您将社区版本更新到 2024.1,它就会起作用。请注意,我直接从 IntelliJ 运行该应用程序,而不是使用
mvn
。
为了完整起见,以下是我的一些相关部分
pom.xml
...
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>