欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot框架打包體積簡化過程圖解

 更新時間:2020年05月11日 14:30:04   作者:菜雞的日??偨Y(jié)  
這篇文章主要介紹了SpringBoot框架打包體積簡化過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

Springboot 框架極大的的簡化了代碼的框架集成開發(fā),想當年還是用ssm框架組合時,那種配置令人頭疼,還有Springboot框架自帶tomcat服務(wù)器,簡化了我們的環(huán)境搭建。但是Springboot框架自帶tomcat服務(wù)器也有問題,就是導(dǎo)致一個服務(wù)很大,比如一個簡單的業(yè)務(wù)系統(tǒng),可能因為導(dǎo)入的第三方j(luò)ar包比較多,導(dǎo)致打包出來的jar非常大。假如是內(nèi)網(wǎng)上傳至服務(wù)器,還好,但是假如是在阿里云這種云服務(wù)器,就很考驗帶寬的上行速度了。比如我家50M寬帶,下行很快,但上行才3M,一個jar包100M,我微調(diào)一下重新部署,這中間的時間就是10分鐘去了。所以也在琢磨如何簡化jar包。

下圖是spingboot框架打出來的jar目錄情況

在BOOT-INF下面

這個lib下面就是第三方j(luò)ar包。

下面就來簡化它吧。

我的項目目錄結(jié)構(gòu)如下

course
  course-common
  course-pojo
  course-service
  course-web

Web中包含springboot框架main啟動入口,打包時,會將 course-common、course-pojo、course-service 這三個服務(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>      <!—- 表示項目打包時集成哪些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>

重點關(guān)注兩處,layout 和 includes 。

layout 是為了 springboot jar簡化后能夠加載第三方j(luò)ar包目錄,如果沒加入這句話,在待會兒啟動時,會報錯。

includes 是指包含哪些項目的jar包,因為我項目結(jié)構(gòu)的問題,我必須將 service 、pojo、common這三個項目打包進去。假如你的項目中沒有自己項目依賴可以寫成如下格式,表示不包含任何jar包。

<includes>
  <include>
    <groupId>nothing</groupId>      
    <artifactId>nothing</artifactId>
  </include>
</includes>

修改完pom.xml后,執(zhí)行 mvn clean package 命令打包出來的springboot項目jar包大小會從100M縮小到100K,此時的jar包并不能直接運行,因為沒有這些第三方依賴。

上傳至服務(wù)器,速度會快很多,原來的jar包運行命令是

nohub java –jar mml-course.jar > ./logs/course.out 2>&1 &

nohub 表示后臺執(zhí)行這個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ù)實際的第三方j(luò)ar所在目錄,當然也可以加載多個地址,用,分隔就好了。一定要在pom中加入<layout>ZIP</layout>,否則這步無法加載第三方j(luò)ar目錄,導(dǎo)致報錯。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java事件處理模型知識點總結(jié)

    java事件處理模型知識點總結(jié)

    在本篇文章里小辮給大家分享的是一篇關(guān)于java事件處理模型知識點總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • Java面向?qū)ο笾^承的概念詳解

    Java面向?qū)ο笾^承的概念詳解

    這篇文章主要介紹了Java面向?qū)ο笾^承的概念詳解,Java是一種面向?qū)ο蟮木幊陶Z言,繼承是實現(xiàn)面向?qū)ο缶幊痰幕A(chǔ)之一。通過繼承,我們可以使代碼更具可讀性、可重用性和可維護性,從而提高程序的效率和可靠性,需要的朋友可以參考下
    2023-04-04
  • SpringBoot集成Redisson操作Redis的實現(xiàn)方法

    SpringBoot集成Redisson操作Redis的實現(xiàn)方法

    Redisson是一個用于Java的Redis客戶端,它提供了在分布式環(huán)境下操作Redis數(shù)據(jù)庫的簡單、高效的方式,本文主要介紹了SpringBoot集成Redisson操作Redis的實現(xiàn)方法,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Java多線程模式之Balking模式詳解

    Java多線程模式之Balking模式詳解

    這篇文章主要介紹了Java多線程模式之Balking模式,結(jié)合實例形式較為詳細的分析了Balking模式的原理、用法與相關(guān)注意事項,需要的朋友可以參考下
    2017-06-06
  • Spring中的REST分頁的實現(xiàn)代碼

    Spring中的REST分頁的實現(xiàn)代碼

    本文將介紹在REST API中實現(xiàn)分頁的基礎(chǔ)知識。我們將專注于使用Spring Boot和Spring Data 在Spring MVC中構(gòu)建REST分頁,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • SpringBoot Security前后端分離登錄驗證的實現(xiàn)

    SpringBoot Security前后端分離登錄驗證的實現(xiàn)

    這篇文章主要介紹了SpringBoot Security前后端分離登錄驗證的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • SpringBoot中Token登錄授權(quán)、續(xù)期和主動終止的方案流程分析

    SpringBoot中Token登錄授權(quán)、續(xù)期和主動終止的方案流程分析

    SpringBoot項目中,基于Token的登錄授權(quán)方案主要有兩種:利用Session/Cookie和JWT,Cookie/Session方案有狀態(tài),不適合分布式架構(gòu),而JWT雖無狀態(tài),但存在過期時間不可強制失效、一次性等缺點,本文介紹SpringBoot中Token登錄授權(quán)、續(xù)期和主動終止的方案,感興趣的朋友一起看看吧
    2024-09-09
  • Java中的遞增i++與++i的實現(xiàn)原理詳解

    Java中的遞增i++與++i的實現(xiàn)原理詳解

    這篇文章主要介紹了Java中的i++與++i的實現(xiàn)原理詳解,在Java中,i++是一種常見的遞增操作符,用于將變量i的值增加1,它是一種簡潔且方便的方式來實現(xiàn)循環(huán)和計數(shù)功能,i++可以用于各種情況,本文來看一下其實現(xiàn)原理,需要的朋友可以參考下
    2023-10-10
  • IDEA中的clean,清除項目緩存圖文教程

    IDEA中的clean,清除項目緩存圖文教程

    這篇文章主要介紹了IDEA中的clean,清除項目緩存圖文教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 解決IDEA克隆代碼后在右下角沒有g(shù)it分支的問題

    解決IDEA克隆代碼后在右下角沒有g(shù)it分支的問題

    這篇文章主要介紹了解決IDEA克隆代碼后在右下角沒有g(shù)it分支的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02

最新評論