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
回答:
- 有没有办法做到这一点,以便每当您在submodule_6或submodule_7中进行更改时,使它们强制重新启动并因此应用更改?
- 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
IntelliJ 和 spring-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