Spring Boot: 是否可以将css、js和模板文件与.war分开?

Spring Boot: Is it possible to separate css, js and template files from .war?

我通过上传由 Maven 创建的 .war 文件将一个新的 spring boot kotlin 应用程序部署到实时服务器,它现在工作正常。但是,似乎静态内容(css、js 和模板文件)也压缩在此 .war 文件中,这给我带来了一些问题,好像我想更改 css 在实时服务器上,我必须重新部署整个 .war 文件。

所以我想知道,是否可以将 css/js/template 文件与 .war 文件分开?通过这种方式,我将 .war 文件上传到服务器,并分别上传 css/js/template 文件。如果我想更改 css 或 js 文件,我不必重新部署。谢谢,请让我知道这是怎么可能的。

您可以使用外部资源配置

如果您不希望某个文件成为 war 包的一部分,只需进行简单的配置即可将其排除:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <excludes>
                <exclude>**/*.css</exclude>
            </excludes>
        </resource>
    </resources>
</build>

您应该能够在 WAR 之外注册资源位置,以便 Spring Boot 为它们提供服务。

例如,您可以这样在 /files/<file_path_relative_to_optfiles_dir> URL 提供 /opt/files 目录中的所有文件:

@Configuration
@EnableWebMvc
class MvcConfig : WebMvcConfigurer {
    override fun addResourceHandlers(registry: ResourceHandlerRegistry) {
        registry
            .addResourceHandler("/files/**")
            .addResourceLocations("file:/opt/files/");
    }
}

您可以在 this Baeldung tutorial 中获得更多解释(在 Java 中,但您可以理解)。