SpringBoot增量部署方式

开发 架构
今天谈一下SpringBoot的增量部署方式,把引用的Jar和静态资源分离。更新的时候只关注变化的文件,加快更新速度。

前言

SpringBoot项目部署,一般都是打全量jar包,通常一个jar包的都是超过100M的。如果进行一般的页面html微调、js修改、img替换、css样式修改时都需要重新打包进行部署。每次进行微小的调整都要对整个大文件重新上传更新部署,实在是太麻烦了。

今天谈一下SpringBoot的增量部署方式,把引用的jar和静态资源分离。更新的时候只关注变化的文件,加快更新速度。

分离jar包

分离jar可以采用两种方式:

  • 可以打一个全量的jar包,然后解压,在BOOT-INF文件中找到lib文件夹,拷贝出来。

  • 使用maven分离jar包。插件pom文件如下:
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <!--指定的依赖路径-->
                            <outputDirectory>
                                ${project.build.directory}/lib
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.

把lib文件复制出来即可。

分离静态资源

在lib同目录下创建resource文件夹,进入代码resource文件夹内复制static文件夹及config文件到resource文件下。如图:

增量打包

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!-- 模块打包需要增加这个配置,带exec的为可执行jar,不带的为可引用jar-->
                    <classifier>exec</classifier>
                    <includeSystemScope>true</includeSystemScope>
                    <!-- 指定该jar包启动时的主类[建议] -->
                    <mainClass>com.zhangls.frame.FrameApplication</mainClass>
                    <!--必须为ZIP模式,不指定的话-Dloader.path不生效-->
                    <layout>ZIP</layout>
                   <!-- 打包的时候排除的jar包-->
                    <includes>
                        <include>
                            <groupId>non-exists</groupId>
                            <artifactId>non-exists</artifactId>
                        </include>
                    </includes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.

打包结果:

启动

把可执行jar包复制到 lib、resource同级文件夹。

执行:java -Dloader.path=./lib,./resource -jar .\
frame-0.0.1-SNAPSHOT-exec.jar

说明

进行增量打包后,如果前端有不涉及到后端的修改时都可以对resource中的文件进行替换,且不用重启服务。后端如果有更改,只用更新有变化的jar包即可。如果在项目修改过程中引用了新的jar包,需要把新引用的jar包上传至lib文件夹。

责任编辑:姜华 来源: 今日头条
相关推荐

2016-01-20 11:22:17

增量部署全量部署运维

2019-02-21 15:01:45

PythonWeb部署

2023-10-12 22:38:18

SpringBoot热部署

2009-09-11 08:12:36

Windows 7企业部署网络部署

2024-11-06 09:26:48

SpringprofileENV

2024-08-27 13:47:03

2021-05-19 09:53:16

SpringbootMyBatisMySQL

2022-02-18 07:27:01

Nest项目

2021-02-20 06:15:00

项目SpringBoot热部署

2024-09-20 05:49:04

SpringBoot后端

2020-03-25 17:55:30

SpringBoot拦截器Java

2021-07-13 07:31:26

Springboot编程事务管理

2011-06-28 11:30:21

邮件归档

2009-03-10 10:01:00

WLAN802.11n

2010-10-25 12:15:02

WAF绿盟

2017-07-04 16:34:33

边缘计算方式

2009-07-28 09:45:34

Webpart部署方式使用ASP.NET

2018-11-07 09:01:13

Tomcat部署方式

2023-09-10 07:20:35

2014-05-21 11:00:55

Windows Azu分布式部署
点赞
收藏

51CTO技术栈公众号