部署 JAR 文件后更新 spring 引导静态资源
Updating spring boot static resources after deploying JAR file
我开发了一个带有 Spring 引导的 REST API。我已经将 Angular 用于前端并将其文件添加到 resources/static。一切正常。
我目前以胖 JAR 格式部署我的应用程序。 spring 引导应用程序不会经常更改,但我必须每天更改前端。有没有办法以某种方式将更新的 angular 文件注入当前部署的 JAR 文件?或者我应该将包装更改为 WAR 并使用外部 tomcat 服务器?
从字面上看,是的,您可以使用 jar command:
更新现有的 jar 文件
jar uf jar-file input-file(s)
但是,您仍然需要重新启动该过程。
我想,您的问题更多是关于 hot deployment
或 hot swapping
- 如何在不停止 运行 进程的情况下添加新文件。
如果 spring-boot 应用程序在生产环境中嵌入了 Tomcat,您仍然需要重新启动它。
因此,实现 angular 前端热部署的最简单方法是拆分 jar,提取 angular 应用程序,然后单独部署它。
如您所述,您可以将 war 和 angular 应用程序部署到 Tomcat 实例。如果您使用基于 Linux 的机器,我建议将 angular 应用程序打包到 tar/zip 并将其提取到 Apache httpd 或 nginx 网络服务器。
此外,您还可以使用 docker-compose for live reloading。
在 开发环境 的情况下要容易得多,因为您可以结合使用 IDE 支持和 spring-boot- devtools 实现热插拔,更多解释见 spring-boot docs.
理论上您可以将任何目录定义为静态文件的来源:
@Configuration
public class ResourceConfig implements WebMvcConfigurer{
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/resources/**")
.addResourceLocations("file:///e:/app/resources/public/")
//other options
}}
不知道它是否适用于生产,我只做了一些原型设计。 Baeldung page (old article, but updated to Spring 5), and official spring docs
上还有更多内容
我开发了一个带有 Spring 引导的 REST API。我已经将 Angular 用于前端并将其文件添加到 resources/static。一切正常。
我目前以胖 JAR 格式部署我的应用程序。 spring 引导应用程序不会经常更改,但我必须每天更改前端。有没有办法以某种方式将更新的 angular 文件注入当前部署的 JAR 文件?或者我应该将包装更改为 WAR 并使用外部 tomcat 服务器?
从字面上看,是的,您可以使用 jar command:
更新现有的 jar 文件jar uf jar-file input-file(s)
但是,您仍然需要重新启动该过程。
我想,您的问题更多是关于 hot deployment
或 hot swapping
- 如何在不停止 运行 进程的情况下添加新文件。
如果 spring-boot 应用程序在生产环境中嵌入了 Tomcat,您仍然需要重新启动它。
因此,实现 angular 前端热部署的最简单方法是拆分 jar,提取 angular 应用程序,然后单独部署它。
如您所述,您可以将 war 和 angular 应用程序部署到 Tomcat 实例。如果您使用基于 Linux 的机器,我建议将 angular 应用程序打包到 tar/zip 并将其提取到 Apache httpd 或 nginx 网络服务器。
此外,您还可以使用 docker-compose for live reloading。
在 开发环境 的情况下要容易得多,因为您可以结合使用 IDE 支持和 spring-boot- devtools 实现热插拔,更多解释见 spring-boot docs.
理论上您可以将任何目录定义为静态文件的来源:
@Configuration
public class ResourceConfig implements WebMvcConfigurer{
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/resources/**")
.addResourceLocations("file:///e:/app/resources/public/")
//other options
}}
不知道它是否适用于生产,我只做了一些原型设计。 Baeldung page (old article, but updated to Spring 5), and official spring docs
上还有更多内容