問題背景
使用spring-cloud之后,網(wǎng)關(guān)、注冊中心、配置中心加上自己的應(yīng)用,包總共大小達(dá)到了200+M(大部分是spring-framework和apache依賴)。jenkins構(gòu)建好應(yīng)用后,需要scp到其他環(huán)境上去,由于辦的阿里云ECS主機(jī)帶寬只有2M,所以每次都要花10min+復(fù)制這些應(yīng)用程序。
如果碰到個bug要修復(fù)。代碼提交到git,jenkins構(gòu)建,部署到測試環(huán)境,這一整套下來至少要20min,其中大部分時間都是花在scp jar包上了。而這些jar包改動的地方很小,第三方依賴基本不怎么變,所以就想著把這些第三方依賴包挪到外部,通過啟動參數(shù)加載這些依賴。
解決思路
1.設(shè)置springboot在打包時只包含我們自己項(xiàng)目的代碼
解壓maven打好的jar包,我們可以發(fā)現(xiàn)內(nèi)部有個 /BOOT-INF/lib。

image.png

image.png

image.png

image.png
2.導(dǎo)出剩下的不在jar中的依賴(貌似springboot-maven-plugin沒有提供這個功能)
apache-maven-dependency-plugin提供了這么一個功能讓我們在打包項(xiàng)目的時候,將這些依賴項(xiàng)導(dǎo)出(官方文檔地址:http://maven.apache.org/plugins/maven-dependency-plugin/sources-mojo.html)。配置如下:

image.png
3.啟動springboot項(xiàng)目時,指定lib目錄
JAVA_OPTION中攜帶-Dloader.path=/opt/leaf/dependency/app-api-getway/lib即可
結(jié)果
排除了第三方依賴后,自己項(xiàng)目打出來的包僅有2M+,復(fù)制到遠(yuǎn)程主機(jī)1min不到就搞定了。這樣在修改完bug后測試,幾分鐘就能看到效果了。