我有一个大型的Spring Boot应用程序,它由多个项目组成,项目之间具有依赖性。其中两个项目是“ Web应用程序”,可以按常规方式运行。两者都包括用于重启/实时重载功能的Spring开发工具。除devtools功能外,一切都可以正常构建/运行。
我们遇到的问题是,一旦启动了其中一个应用程序,整个应用程序目录便成为重新加载触发器的一部分-资源,模板,CSS,gradle.build ...从目录的根目录触及任何文件子项目向下触发重新加载。至少可以说,这使前端开发变得乏味。
其中一个项目称为Project1,其SpringBoot应用程序位于project1 / app目录中。它具有对project1 / core和另一个名为“ commons”的项目的依赖。
在控制台输出的开始,出现以下几行:
DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Included patterns for restart : []
org.springframework.boot.devtools.settings.DevToolsSettings - Excluded patterns for restart : [/spring-boot-starter/target/classes/, ...]
org.springframework.boot.devtools.restart.ChangeableUrls - Matching URLs for reloading :
file:/C:/.../project1/app/bin/,
file:/C:/.../project1/core/bin/,
file:/C:/.../commons/bin/,
file:/C:/.../project1/app/]
这似乎是最后一个条目,可导致整个project1 / app目录被扫描以进行任何更改以重新启动。
带有devtools的“标准”入门项目在同一行显示了这一点:
DEBUG org.springframework.boot.devtools.restart.ChangeableUrls - Matching URLs for reloading : [file:/C:/.../auto-restart/bin/]
如果我向其他项目之一添加依赖项,它将显示如下:
DEBUG org.springframework.boot.devtools.restart.ChangeableUrls - Matching URLs for reloading : [file:/C:/.../auto-restart/bin/, file:/C:/.../commons/bin/]
对我来说很合适-不含顶级文件夹。
最后一个注意事项:使用Eclipse,如果正在运行“行为异常”项目之一,则控制台标题上的“ Trigger devtools restart”图标将不起作用。对于小型示例项目,它确实可以正常工作。
我无法找到有关如何构建ChangeableUrls列表的任何信息,或者除了/ bin之外,为什么它还会占用应用程序的根目录。尝试更改application.properties中的include或exclude参数没有影响-仍然会扫描整个目录以查找更改。
有趣的是,包括spring.devtools.restart.trigger-file属性在内,DOES会停止扫描所有内容...但是它破坏了后端开发的目的。
答案 0 :(得分:0)
对于这个问题,我最好的猜测是在application.property或application.yml中检查以下配置(基于您的项目设置)
如果您使用application.yml,请寻找:-
spring:
devtools:
restart:
additional-paths:
- .
如果您使用application.properties,则查找:-
spring.devtools.restart.additional-paths = .
尝试在spring boot项目中搜索此配置,如果找到了该配置,请尝试禁用/注释该配置,然后测试您的应用程序。
使用配置“ spring.devtools.restart.additional-paths =”。弹簧启动使您可以在文件稍有更改的情况下重新启动整个应用程序。
这里是您可以参考以了解更多详细信息的文章:-SpringBoot Devtools