spring-boot-devtools重新加载多模块Maven项目更改

重新加载多模块Maven项目更改


回答:

想象一个多模块的Maven项目。项目结构为:

pom.xml //parentpom

|

pom.xml //submodule_1

|

pom.xml //submodule_2

.

.

.

pom.xml //submodule_7

例如,submodule_5具有submodule_6和submodule_7作为依赖项。可以构建submodule_5来构造可以部署的War文件。

Spring-Boot-Devtools 提供了每当 对classmodule 的submodule_5进行更改时自动重启的功能。

每当使用以下命令运行应用程序时:

mvn spring-boot:run

然后对submodule_5进行更改(取决于您使用的类路径是否更改了。(对于 Eclipse 自动/对于按+的 InteliJ ),spring-

boot自动重启应用程序并添加更改。submodule_6或submodule_7发生的更改不会触发自动重启。Ctrl``F9


回答:

  1. 有没有办法做到这一点,以便每当您在submodule_6或submodule_7中进行更改时,使它们强制重新启动并因此应用更改?
  2. Spring-boot-devtools使用两个类加载器:“基础类加载器”和“重启类加载器”。是否在应用程序初始启动时将submodule_6和submodule_7添加到“基础类加载器”中,而将submodle_5保留在“重新启动类加载器”中?是否可以使submodule_5每当强制重新启动时都使用“基础类加载器”中的submodule_6和submodule_7版本?

回答:

为了解决这个问题,我开始从 InteliJ 内部运行该应用程序。无需添加。

spring.devtools.restart.additional-paths=../submodule_6,../submodule_7

IntelliJspring-boot 似乎可以很好地协同工作。首先它对我不起作用的原因是因为我起初是从命令行进行工作的。

回答:

因此 spring-boot-devtools 使用两个类加载器来加载应用程序。jar将被加载

在“基地类加载器”,你的应用程序将在“重启类加载器”加载。每当类路径发生变化时,最后一个类加载器将重新启动。

每当从命令行运行submodule_5时,它将构建submodule_6和submodule_7并将jar添加到submodule_5的构建中。每当在submodule_6和submodule_7中进行更改时,spring-

boot甚至都不会注意到,因为它仅监视submodule_5并具有所需的jar。即使您明确要求它也监视那些子模块,它仍然不会重建它们,它只会继续使用已经在“基本类加载器”中加载的jar(这是我的假设,我不是100

%确定其运作方式)。

每当从IDE中运行submodule_5时,它都不会创建submodule_6和submodule_7的jar。它将仅使用其classpath。这样一来,您的intire项目的classpath(所有子模块)中的更改将触发自动重启,并且更改将被应用。

每当从IDE运行时,都会更改为html-files,css-files,xml-

files等资源。。。不会触发重新启动,因为这不是类路径中的更改。但是更改仍然可见。

以上是 spring-boot-devtools重新加载多模块Maven项目更改 的全部内容, 来源链接: utcz.com/qa/430872.html

回到顶部