【问题标题】:Spring boot devtools and dependent spring projectsSpring boot devtools和依赖的spring项目
【发布时间】:2019-03-14 17:56:09
【问题描述】:

我有一个大型 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,如果“行为不端”的项目之一正在运行,则控制台标题上的“触发 devtools 重启”图标不起作用。它确实适用于小型示例项目。

我无法找到有关如何构建 ChangeableUrls 列表的任何信息,或者为什么它可能会获取除 /bin 之外的应用程序根目录。尝试更改 application.properties 中的 include 或 exclude 参数没有影响 - 仍会扫描整个目录以进行更改。

有趣的是,包括 spring.devtools.restart.trigger-file 属性确实停止扫描所有内容......但它破坏了后端开发的目的。

【问题讨论】:

    标签: spring-boot devtools


    【解决方案1】:

    根据问题,我最好的猜测是检查 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 = .” spring boot 允许您重新启动整个应用程序,只需对文件稍作更改。

    这里有文章,你可以参考更多细节:-SpringBoot Devtools

    【讨论】:

      猜你喜欢
      • 2021-04-05
      • 2019-01-04
      • 2018-01-31
      • 2019-07-28
      • 2017-10-19
      • 1970-01-01
      • 2020-09-10
      • 2017-05-17
      • 1970-01-01
      相关资源
      最近更新 更多