
前言
SpringBoot項(xiàng)目部署,一般都是打全量jar包,通常一個(gè)jar包的都是超過100M的。如果進(jìn)行一般的頁面html微調(diào)、js修改、img替換、css樣式修改時(shí)都需要重新打包進(jìn)行部署。每次進(jìn)行微小的調(diào)整都要對(duì)整個(gè)大文件重新上傳更新部署,實(shí)在是太麻煩了。
今天談一下SpringBoot的增量部署方式,把引用的jar和靜態(tài)資源分離。更新的時(shí)候只關(guān)注變化的文件,加快更新速度。
分離jar包
分離jar可以采用兩種方式:
- 可以打一個(gè)全量的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>

把lib文件復(fù)制出來即可。
分離靜態(tài)資源
在lib同目錄下創(chuàng)建resource文件夾,進(jìn)入代碼resource文件夾內(nèi)復(fù)制static文件夾及config文件到resource文件下。如圖:

增量打包
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 模塊打包需要增加這個(gè)配置,帶exec的為可執(zhí)行jar,不帶的為可引用jar-->
<classifier>exec</classifier>
<includeSystemScope>true</includeSystemScope>
<!-- 指定該jar包啟動(dòng)時(shí)的主類[建議] -->
<mainClass>com.zhangls.frame.FrameApplication</mainClass>
<!--必須為ZIP模式,不指定的話-Dloader.path不生效-->
<layout>ZIP</layout>
<!-- 打包的時(shí)候排除的jar包-->
<includes>
<include>
<groupId>non-exists</groupId>
<artifactId>non-exists</artifactId>
</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
打包結(jié)果:

啟動(dòng)
把可執(zhí)行jar包復(fù)制到 lib、resource同級(jí)文件夾。

執(zhí)行:java -Dloader.path=./lib,./resource -jar .\
frame-0.0.1-SNAPSHOT-exec.jar
說明
進(jìn)行增量打包后,如果前端有不涉及到后端的修改時(shí)都可以對(duì)resource中的文件進(jìn)行替換,且不用重啟服務(wù)。后端如果有更改,只用更新有變化的jar包即可。如果在項(xiàng)目修改過程中引用了新的jar包,需要把新引用的jar包上傳至lib文件夾。