目录:

  • 1、使用背景
  • 2、实现流程
  • 3、部署增量包到项目中并启动
  • 4、说明


1、使用背景

最近发现公司发布版本时候,很齐全,接口文档,部署方式等都很好,其中有个增量部署包,有点兴趣,不清楚怎么生成增量包和部署增量包的,特此记录一下。

2、实现流程

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

springboot 手动更新bean springboot增量更新jar_后端


把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>

打包结果:

springboot 手动更新bean springboot增量更新jar_jar包_02

其中可执行包打包的就是除了lib文件夹外其他所有文件的打成的通用包。

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

也可以打成zip包,上传到项目中解压后执行启动命令。

3、部署增量包到项目中并启动

上传zip到项目目录中后,执行如下命令启动:

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

这个命令的意思就是使用上面新的lib文件夹的包以及resource的配置文件,在执行后面的通用jar包,所以每次有跟新的文件,直接替换文件夹下的文件即可,加载的是该目录下的文件和静态资源等。

4、说明

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