以前已經在文章中介紹詳細部署的過程:SpringBoot項目部署到Linux服務器併發布。html
可是,這種作法有一些問題,就是每次上傳jar包到服務器的時候都要好久。爲何呢?也許咱們只是建立了一個最基本的SpirngBoot項目,也許咱們只是寫了三四行代碼,最後生成的jar包大小也大的離譜,足足有17M,緣由在於生成的可執行jar不只包含編譯以後的類,還包含了程序運行所依賴的jar包,而這大部分佔比就是這些jar包。java
咱們經過壓縮軟件查看生成jar包中的內容:git
slimming.jar # 17M - BOOT-INF - classes # 存放編譯後的代碼 - lib # 運行須要的依賴 - classpath.idx - META-INF - org
咱們能夠明顯看到,致使jar包體積那麼大的罪魁禍首就是這個lib,且每每咱們不多改動這些依賴,頻繁改動的每每是一些代碼中的邏輯,所以,瘦身的思路就在於:將lib從jar中抽離出來,只需上傳一次lib,其餘部分的體積就微不足道了,就可以實現秒傳。spring
按照原先的maven配置方式,在target目錄下生成jar。shell
<build> <finalName>slimming</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
$ mvn clean package
拿到BOOT-INF/lib目錄。springboot
<build> <finalName>slimming</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- 指定項目的啓動類 --> <mainClass>com.hyh.SpringBootSlimmingApplication</mainClass> <!-- 指定打包方式爲ZIP --> <layout>ZIP</layout> <includes> <!-- 若是有本身的依賴jar,能夠再此導入 --> <include> <groupId>nothing</groupId> <artifactId>nothing</artifactId> </include> </includes> </configuration> <executions> <execution> <goals> <!-- 剔除其餘的依賴,只保留最簡單的結構 --> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
$ mvn clean package
此時,/target
目錄下的slimming.jar已經從18000K變成121K。服務器
- lib - slimming.jar
$ nohup java -Dloader.path=./lib -jar slimming.jar $
本文內容均爲對優秀博客及官方文檔總結而得,原文地址均已在文中參考閱讀處標註。最後,文中的代碼樣例已經所有上傳至Gitee:https://gitee.com/tqbx/springboot-samples-learn,另有其餘SpringBoot的整合哦。併發