前因
由于我司項目采用的是基于開發的項目,所以每一個模塊都是打成jar包去進行全量更新部署的app需要多大的服務器,如果是在內網的話還好,但是我們是買的阿里云的服務器,部署在公網上的,在網絡帶寬不穩定的情況下,一個小小的改動就需要去上傳發布一個一百多兆的jar包文件,顯得十分臃腫。
我們之前使用在部署Web工程的時候,可以進行增量更新,就是改動哪一個文件,就把相應的class文件更新上去,重啟即可。調研發現也是可以采用增量更新,給項目做瘦身處理的。之所以編譯出來的Jar包很大,是因為里面依賴了很多外部依賴庫(jar包)占用了絕大多數的空間,如下圖:
可以發現,我們依賴的這些jar都是固定不變的,所以就沒有必要頻繁的去全量打包上傳了,將這些不變的jar包抽取出來,每次只上傳更新變化的,這樣就能夠減少我們上傳更新jar文件大小了。這和模板模式很相似,只關注改動的信息,把不變的信息抽取出來。
具體操作 第一步:將不變的jar包提取出來上傳到服務器
正常打包的pom.xml文件
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>

<artifactId>spring-boot-maven-pluginartifactId>
<configuration>
<mainClass>com.AppmainClass>
<layout>ZIPlayout>
configuration>
<executions>
<execution>
<goals>
<goal>repackagegoal>
goals>
execution>
executions>

plugin>
<plugins>
<build>
打過包,找到對應的jar文件app需要多大的服務器,解壓文件,將lib包中的文件全部上傳至服務器
上傳至服務器的某個文件夾下
修改pom.xml文件配置文件,使我們編譯出來的jar包不含有lib包
<build>
<plugins>
<plugin>

<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
<configuration>
<mainClass>com.AppmainClass>
<layout>ZIPlayout>
<includes>
<include>
<groupId>nothinggroupId>
<artifactId>nothingartifactId>
include>
includes>
configuration>

<executions>
<execution>
<goals>
<goal>repackagegoal>
goals>
execution>
executions>
plugin>
<plugins>
<build>
配置完成后,再次執行編譯打包,所以生成的jar包體積變小,如下圖所示:
所以我們再次編譯上傳時,就只用把我們自己的jar包上傳重新部署即可
修改啟動腳本命令
#瘦身后的腳本命令
java -Xms128m -Xmx512m -Dloader.path=/a/b/c/lib -jar /a/b/c/xxx-service.jar &
#原先的啟動腳本命令
#java -Xms128m -Xmx512m -jar exam-service.jar &
后面如果需要變更業務邏輯,我們只需輕量的編譯工程,可以大大提高項目部署的效率。