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 中,但您可以理解)。
我通过上传由 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 中,但您可以理解)。