SpringBoot框架打包體積簡化過程圖解
Springboot 框架極大的的簡化了代碼的框架集成開發(fā),想當(dāng)年還是用ssm框架組合時(shí),那種配置令人頭疼,還有Springboot框架自帶tomcat服務(wù)器,簡化了我們的環(huán)境搭建。但是Springboot框架自帶tomcat服務(wù)器也有問題,就是導(dǎo)致一個(gè)服務(wù)很大,比如一個(gè)簡單的業(yè)務(wù)系統(tǒng),可能因?yàn)閷?dǎo)入的第三方j(luò)ar包比較多,導(dǎo)致打包出來的jar非常大。假如是內(nèi)網(wǎng)上傳至服務(wù)器,還好,但是假如是在阿里云這種云服務(wù)器,就很考驗(yàn)帶寬的上行速度了。比如我家50M寬帶,下行很快,但上行才3M,一個(gè)jar包100M,我微調(diào)一下重新部署,這中間的時(shí)間就是10分鐘去了。所以也在琢磨如何簡化jar包。
下圖是spingboot框架打出來的jar目錄情況
在BOOT-INF下面
這個(gè)lib下面就是第三方j(luò)ar包。
下面就來簡化它吧。
我的項(xiàng)目目錄結(jié)構(gòu)如下
course course-common course-pojo course-service course-web
Web中包含springboot框架main啟動(dòng)入口,打包時(shí),會(huì)將 course-common、course-pojo、course-service 這三個(gè)服務(wù)打成jar包,集成在 course 最終的jar里lib目錄下。
修改course-web服務(wù)的pom文件
<build> <finalName>mml-course</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <outputDirectory>E:\JARS\pre</outputDirectory> <layout>ZIP</layout> <!—- 必須加這句話 --> <includes> <!—- 表示項(xiàng)目打包時(shí)集成哪些jar包--> <include> <groupId>com.mml</groupId> <artifactId>mml-course-service</artifactId> </include> <include> <groupId>com.mml</groupId> <artifactId>mml-course-pojo</artifactId> </include> <include> <groupId>com.mml</groupId> <artifactId>mml-course-common</artifactId> </include> </includes> </configuration> </plugin> </plugins>
重點(diǎn)關(guān)注兩處,layout 和 includes 。
layout 是為了 springboot jar簡化后能夠加載第三方j(luò)ar包目錄,如果沒加入這句話,在待會(huì)兒啟動(dòng)時(shí),會(huì)報(bào)錯(cuò)。
includes 是指包含哪些項(xiàng)目的jar包,因?yàn)槲翼?xiàng)目結(jié)構(gòu)的問題,我必須將 service 、pojo、common這三個(gè)項(xiàng)目打包進(jìn)去。假如你的項(xiàng)目中沒有自己項(xiàng)目依賴可以寫成如下格式,表示不包含任何jar包。
<includes> <include> <groupId>nothing</groupId> <artifactId>nothing</artifactId> </include> </includes>
修改完pom.xml后,執(zhí)行 mvn clean package 命令打包出來的springboot項(xiàng)目jar包大小會(huì)從100M縮小到100K,此時(shí)的jar包并不能直接運(yùn)行,因?yàn)闆]有這些第三方依賴。
上傳至服務(wù)器,速度會(huì)快很多,原來的jar包運(yùn)行命令是
nohub java –jar mml-course.jar > ./logs/course.out 2>&1 &
nohub 表示后臺(tái)執(zhí)行這個(gè)jar。
現(xiàn)在需要改成如下格式
nohub java –Dloader.path=/path/lib –jar mml-course.jar > ./logs/course.out 2>&1 &
加入了 –Dloader.path=/path/lib , /path/lib 根據(jù)實(shí)際的第三方j(luò)ar所在目錄,當(dāng)然也可以加載多個(gè)地址,用,分隔就好了。一定要在pom中加入<layout>ZIP</layout>,否則這步無法加載第三方j(luò)ar目錄,導(dǎo)致報(bào)錯(cuò)。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 基于SpringBoot框架管理Excel和PDF文件類型
- SpringBoot多模塊項(xiàng)目框架搭建過程解析
- 使用ajax跨域調(diào)用springboot框架的api傳輸文件
- springboot整合jquery和bootstrap框架過程圖解
- SpringBoot2 集成log4j2日志框架的實(shí)現(xiàn)
- SpringBoot框架集成token實(shí)現(xiàn)登錄校驗(yàn)功能
- SpringBoot2.0 整合 Dubbo框架實(shí)現(xiàn)RPC服務(wù)遠(yuǎn)程調(diào)用方法
- Spring Boot單元測(cè)試中使用mockito框架mock掉整個(gè)RedisTemplate的示例
相關(guān)文章
java事件處理模型知識(shí)點(diǎn)總結(jié)
在本篇文章里小辮給大家分享的是一篇關(guān)于java事件處理模型知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-01-01SpringBoot集成Redisson操作Redis的實(shí)現(xiàn)方法
Redisson是一個(gè)用于Java的Redis客戶端,它提供了在分布式環(huán)境下操作Redis數(shù)據(jù)庫的簡單、高效的方式,本文主要介紹了SpringBoot集成Redisson操作Redis的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03Spring中的REST分頁的實(shí)現(xiàn)代碼
本文將介紹在REST API中實(shí)現(xiàn)分頁的基礎(chǔ)知識(shí)。我們將專注于使用Spring Boot和Spring Data 在Spring MVC中構(gòu)建REST分頁,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot Security前后端分離登錄驗(yàn)證的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09SpringBoot中Token登錄授權(quán)、續(xù)期和主動(dòng)終止的方案流程分析
SpringBoot項(xiàng)目中,基于Token的登錄授權(quán)方案主要有兩種:利用Session/Cookie和JWT,Cookie/Session方案有狀態(tài),不適合分布式架構(gòu),而JWT雖無狀態(tài),但存在過期時(shí)間不可強(qiáng)制失效、一次性等缺點(diǎn),本文介紹SpringBoot中Token登錄授權(quán)、續(xù)期和主動(dòng)終止的方案,感興趣的朋友一起看看吧2024-09-09Java中的遞增i++與++i的實(shí)現(xiàn)原理詳解
這篇文章主要介紹了Java中的i++與++i的實(shí)現(xiàn)原理詳解,在Java中,i++是一種常見的遞增操作符,用于將變量i的值增加1,它是一種簡潔且方便的方式來實(shí)現(xiàn)循環(huán)和計(jì)數(shù)功能,i++可以用于各種情況,本文來看一下其實(shí)現(xiàn)原理,需要的朋友可以參考下2023-10-10解決IDEA克隆代碼后在右下角沒有g(shù)it分支的問題
這篇文章主要介紹了解決IDEA克隆代碼后在右下角沒有g(shù)it分支的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02