springboot部署打包爲jar,一般都是全量打包,jar包的大小通常都是超過100M的,並且在進行一般的頁面html微調、js修改、img替換、css樣式修改時也需要重新打包進行部署;每次微小的調整都需要重新打包就太煩了,一般在項目開發穩定以後項目中引用的jar就不再改變
爲了方便進行靜態資源管理及增量部署,對項目引用jar包以及靜態資源分離打包,提高打包的效率及部分前端微調項修改後及時進行無重啓更新;
具體步驟如下:
1、初次打包進行全量打包,對打包的jar進行解壓,解壓後的文件如下圖展示:
2、分離引用的jar包:進入BOOT-INF中,copy文件夾lib到指定目錄下,如jar包運行目錄;如圖3,
3、分離靜態文件:在lib同目錄下創建resource文件夾,進入classes文件夾內copy文件夾static及templates文件夾到resource文件下;如圖:
4、刪除jar包及解壓文件,當前目錄結構如下:
5、增量打包,打包不再將引用jar及static文件夾、templates文件夾打到jar包中:首先修改pom.xml文件中打包相關配置,如下圖:
打包配置增加了如下代碼:
<layout>ZIP</layout>
<includes>
<include>
<groupId>non-exists</groupId>
<artifactId>non-exists</artifactId>
</include>
</includes>
resource打包配置增加如下過濾:
<exclude>static/**/*</exclude>
<exclude>templates/**/*</exclude>
最終pom.xml中打包配置如下:
<build>
<finalName>web</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
<mainClass>com.***.Application</mainClass>
<!--增量打包配置【start】-->
<layout>ZIP</layout>
<includes>
<include>
<groupId>non-exists</groupId>
<artifactId>non-exists</artifactId>
</include>
</includes>
<!--增量打包配置【end】-->
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.0.4.RELEASE</version>
<configuration>
<fork>false</fork>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
<excludes>
<!--【增加靜態文件過濾】-->
<exclude>static/**/*</exclude>
<exclude>templates/**/*</exclude>
</excludes>
</resource>
</resources>
</build>
6、執行maven clean install,獲得最終jar包,如下圖所示,只有5M大小;
7、最終運行時,jar的執行命令中增加lib及resource的路徑指向,否則項目無法正常運行;
java -Dloader.path=./lib,./resource -jar ./web.jar
8、如上進行增量打包後,如果前端有不涉及到後端的修改時都可以對resource中的文件進行替換進行實時更新,不再進行重啓;後端有變動也不用上傳100多M的jar到服務器,影響效率;