springboot項(xiàng)目依賴包外置運(yùn)行

問題背景

使用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
這個是springboot-maven-plugin在執(zhí)行 repackage goal時做的。我們可以通過配置plugin的configuration來指定我們想要include和exclude的jar包。(很奇怪的是,有excludeGroupIds,卻沒有includeGroupIds)。查看官網(wǎng)(https://docs.spring.io/spring-boot/docs/current/maven-plugin/repackage-mojo.html),可以這么做在打包時只保留我們自己的項(xiàng)目:
image.png

好奇心驅(qū)使,查看了下springboot-maven-plugin源碼,可以知道configuration支持的標(biāo)簽為includes,excludes,excludeGroupIds和excludeArtifactIds。其中includes有子標(biāo)簽include,include(Include繼承了FilterableDependency)的屬性有三個。
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
導(dǎo)出后,將這些依賴固定放到主機(jī)的某個目錄下,以后這部分依賴基本就不用更新了

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后測試,幾分鐘就能看到效果了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,273評論 6 342
  • 我jdk版本是1.7.0_95,在網(wǎng)上查了一下1.7屬于java7maven3.3+版本都支持java7,所以我使...
    liangxifeng833閱讀 1,383評論 0 2
  • 軟件的持續(xù)集成工具之一,易上手,功能強(qiáng)大,話不多說,干貨奉上。我的博客地址:http://blog.lzoro.c...
    格子Lin閱讀 12,525評論 10 41
  • Maven簡單介紹 Maven是一個項(xiàng)目管理工具。強(qiáng)大,但是很容易使用。 它包含了: 一個項(xiàng)目對象模型 (Proj...
    高公子Daniel閱讀 4,499評論 4 60

友情鏈接更多精彩內(nèi)容