实时重新加载在 Spring boot devtools 中不起作用

Kin*_*ere 8 java spring spring-mvc spring-boot

我在 Spring Boot 应用程序中使用此依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>
Run Code Online (Sandbox Code Playgroud)

文件说:

默认情况下,更改 /META-INF/maven、/META-INF/resources、/resources、/static、/public 或 /templates 中的资源不会触发重新启动,但会触发实时重新加载

现场重装文件说:

spring-boot-devtools 模块包含一个嵌入式 LiveReload 服务器,可用于在资源更改时触发浏览器刷新。LiveReload 浏览器扩展可从 livereload.com 免费获得,适用于 Chrome、Firefox 和 Safari。

现在,我使用 Maven,我的静态文件夹在 src/main/resources 下,所以我的文件夹结构是:

src/main/resources/static/index.html

这是我的 index.html 文件中的内容:

<!DOCTYPE HTML>
<html>
<head>
    <title>Getting Started: Serving Web Content</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <p>HI THERE! Get your greeting <a href="/greeting">here</a></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我使用 chrome 浏览器,但没有在 chrome 中使用任何实时重新加载浏览器扩展。

我使用这个 Powershell 命令运行应用程序(因为我使用的是 spring boot maven 插件):

mvn clean package; java -jar target\project-name-version.jar
Run Code Online (Sandbox Code Playgroud)

这将在 localhost:8080 上启动服务器并在网页中显示 index.html 的内容。

但是,当我在 Eclipse IDE 中对 index.html 进行更改并保存文件,然后刷新浏览器页面时,我没有看到新的更改。

为什么实时重新加载对我不起作用?我究竟做错了什么?

dav*_*xxx 14

从 IDE 运行应用程序不是使开发人员工具工作的约束。你的问题在别处。

这些命令:

mvn clean package; 
java -jar target\project-name-version.jar
Run Code Online (Sandbox Code Playgroud)

意味着您不使用 spring-boot maven 插件来运行您的应用程序。
您运行完全打包的应用程序的自动启动 jar。因此,Spring Boot devtools 被禁用,如文档所述

运行完全打包的应用程序时,开发人员工具会自动禁用。如果您的应用程序是从 java -jar 启动的,或者是从特殊的类加载器启动的,则它被视为“生产应用程序”。将依赖项标记为可选是一种最佳实践,可以防止 devtools 被传递地应用于使用您的项目的其他模块。Gradle 不支持开箱即用的可选依赖项,因此您可能需要查看 propdeps-plugin。

在展开/开发模式下从命令行运行应用程序,mvn clean package不是必需的,也是无奈的。
只需执行mvn spring-boot:run