我正在开发一个 Java/Spring Boot 应用程序,并且像许多使用 Java 和 Spring Boot 创建的 Web 应用程序一样,它使用 Thymeleaf 和静态资源(CSS、JS 等)。这些资源存储在resources/static/**
.
在 GitHub Codespaces 中查看 CSS 更改,我重新启动了 Spring 服务器,这没什么大不了的,但它的工作只是有点烦人。但是,如果我想使用本地计算机而不是 GitHub Codespaces,我会启动一个带有 Remote Containers Extension 的 VS Code Dev Container。当我更新 CSS 时,更新 CSS 的唯一方法是让我运行mvn clean
并mvn install
强制target/**
重建文件夹。(是的,我已经清除了 Chrome 缓存,这不是缓存问题,我什至用 curl 进行了测试以防万一)
这会影响任何静态资源,包括 application.properties。Thymeleaf 模板也受此问题影响。MVN 的目标文件夹包含您应该再次复制的静态资源。由于某种原因,MVN 未检测到文件已更改。每当您更新 CSS 文件时,VS Code 是否会更新上次更新的时间戳?GitHub Codespaces 在大概 Linux 上使用 Docker,而我在 Windows 11 上使用 Dev Containers 运行 VS Code。
为了解决这个问题,我定义了一个application-dev.properties
文件并更新.vscode/launch.json
以附加"vmArgs": ["-Dspring.profiles.active=dev"]
到我包含的开发人员属性中,该属性spring.resources.static-locations=file:src/main/resources/static/
跳过目标目录并需要重建。事实上,它工作得更好,因为您不需要重新启动服务器target/**
即可获得更新,这在 GitHub Codespaces 中工作正常,但新文件不会复制到target/**
具有远程容器扩展名的 VS Code 中。有趣的是两者都只使用 Dev Containers,因此它应该在两个位置都可以工作,但不能。GitHub Codespaces 处于测试阶段,可能存在未记录的怪癖。
这里有没有人遇到过这个问题。这会被认为是一个错误吗?这是预期的行为,为什么?有一个更好的方法吗。在每次 CSS 更改后运行mvn install
都是徒劳的,并且鉴于 GitHub Codespaces 中不需要它,我不明白为什么它在带有 Dev Containers 的 VS Code 中。我的解决方案解决了开发中的问题,但为什么在 VS Code 中需要它而不在 GitHub Codespaces 中?