最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot打成jar包瘦身方法總結(jié)

 更新時間:2022年12月19日 08:21:16   作者:讓丄帝愛伱  
springBoot打包的時候代碼和jar包打包在同一個jar包里面,會導(dǎo)致jar包非常龐大,下面這篇文章主要給大家介紹了關(guān)于SpringBoot打的jar包瘦身方法的相關(guān)資料,需要的朋友可以參考下

正常打包

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

瘦身方法一:Dloader.path指定依賴包位置

修改maven打包參數(shù)

<build>
   <plugins>
       <plugin>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-maven-plugin</artifactId>
           <configuration>
               <layout>ZIP</layout>
                <includes>
                    <include>
                        <groupId>nothing</groupId>
                        <artifactId>nothing</artifactId>
                    </include>
                    <include>
                        <groupId>com.huacloud.tax.rpc</groupId>
                        <artifactId>common</artifactId>
                    </include>
                </includes>
           </configuration>
       </plugin>
   </plugins>
</build>
  • layout

用來配置可執(zhí)行jar包中Main-Class的類型,一定要設(shè)置為 ZIP,使打的jar包中的Main-Class為PropertiesLauncher 。

  • includes

將需要保留的jar包,按照groupId和artifactId(注意兩個都是必填項)include進來。

nothing 代表不存在的依賴包,意思就是什么依賴包都不引入

common是引入的公共服務(wù)模塊。 maven打包

命令:mvn clean package install ‘-Dmaven.test.skip=true’

查看xxxx.jar里面META-INF目錄下的MANIFEST.MF文件:

Main-Class的值為:PropertiesLauncher

從瘦身前打包中拷貝中l(wèi)ib包

執(zhí)行:java -Dloader.path=“D:\web\lib” -jar xxx-thin.jar

啟動參數(shù)loader.path配置外置依賴包的加載路徑

瘦身方法二:配置文件里指定依賴包位置

1.配置

<build>
   <finalName>打出jar包的名稱</finalName>
    <plugins>
      <!-- 1、編譯出不帶 lib 文件夾的Jar包 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!--表示編譯版本配置有效-->
                <fork>true</fork>
                <!--引入第三方j(luò)ar包時,不添加則引入的第三方j(luò)ar不會被打入jar包中-->
                <includeSystemScope>true</includeSystemScope>
                <!--排除第三方j(luò)ar文件-->
                <includes>
                    <include>
                        <groupId>nothing</groupId>
                        <artifactId>nothing</artifactId>
                    </include>
                </includes>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    
    	<!-- 2、完成對Java代碼的編譯,可以指定項目源碼的jdk版本,編譯后的jdk版本,以及編碼 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <!-- 源代碼使用的JDK版本 --> 
                <source>${java.version}</source>
                <!-- 需要生成的目標(biāo)class文件的編譯版本 -->
                <target>${java.version}</target>
                <!-- 字符集編碼 -->
                <encoding>UTF-8</encoding>
                <!-- 用來傳遞編譯器自身不包含但是卻支持的參數(shù)選項 -->  
                <compilerArguments>
                        <verbose/>
                        <!-- windwos環(huán)境(二選一) -->
                        <!--<bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>-->
                        <bootclasspath>D:/App/jdk/jdk1.8.0_221/jre1.8.0_221/lib/rt.jar;D:/App/jdk/jdk1.8.0_221/jre1.8.0_221/lib/jce.jar</bootclasspath>
                        <!-- Linux環(huán)境(二選一) -->
                        <!--<bootclasspath>${java.home}/lib/rt.jar:${java.home}/lib/jce.jar</bootclasspath>-->
                    </compilerArguments>
            </configuration>
        </plugin>

        <!-- 3、將所有依賴的jar文件復(fù)制到target/lib目錄 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                      <!--復(fù)制到哪個路徑,${project.build.directory} 缺醒為 target,其他內(nèi)置參數(shù)見下面解釋-->
                        <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        <overWriteReleases>false</overWriteReleases>
                        <overWriteSnapshots>false</overWriteSnapshots>
                        <overWriteIfNewer>true</overWriteIfNewer>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        
    	<!-- 4、指定啟動類,指定配置文件,將依賴打成外部jar包 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <!-- 是否要把第三方j(luò)ar加入到類構(gòu)建路徑 -->
                        <addClasspath>true</addClasspath>
                        <!-- 外部依賴jar包的最終位置 -->
                        <classpathPrefix>lib/</classpathPrefix>
                        <!-- 項目啟動類 -->
                        <mainClass>org.jeecg.JeecgSystemApplication</mainClass>
                    </manifest>
                </archive>
                <!--資源文件不打進jar包中,做到配置跟項目分離的效果-->
                <excludes>
                    <!-- 業(yè)務(wù)jar中過濾application.properties/yml文件,在jar包外控制 -->
                    <exclude>*.properties</exclude>
                    <exclude>*.xml</exclude>
                    <exclude>*.yml</exclude>
                </excludes>
            </configuration>
        </plugin>

    </plugins>
</build>

includeSystemScope:jar包分兩種

  • 一種是spring、mybatis等這種項目依賴的
  • 一種是手動引入的第三方 jar 依賴

如果該參數(shù)不設(shè)置為 true 的話是不能被打包進來的

includes:排除項目中所有的 jar

我們需要將打包插件替換為 maven-jar-plugin,然后使用該插件拷貝依賴到 jar 到外面的 lib 目錄

  • maven-compiler-plugin:

完成對Java代碼的編譯,可以指定項目源碼的jdk版本、編譯后的jdk版本,以及編碼,如果不寫這個插件也是沒問題的,不寫會使用默認(rèn)的 jdk 版本來處理,只是這樣容易出現(xiàn)版本不匹配的問題,比如本地maven環(huán)境用的3.3.9版本,默認(rèn)會使用jdk1.5進行編譯,而項目中用的jdk1.8的編譯環(huán)境,那就會導(dǎo)致打包時編譯不通過。

  • maven-dependency-plugin:

作用就是將所有依賴的jar文件復(fù)制到指定目錄下

  • maven-jar-plugin:

主要作用就是將maven工程打包成jar包。

  • 打包時排除資源配置文件,
  • 排除了配置文件那么項目啟動是怎么讀取呢?配置文件有這么一個默認(rèn)的優(yōu)先級

當(dāng)前項目config目錄下 > 當(dāng)前項目根目錄下 > 類路徑config目錄下 > 類路徑根目錄下
因此只需要

2.打包:clean package

MANIFEST.MF文件內(nèi)容:

3.啟動:java -jar xxx.jar

MANIFEST.MF文件指定了依賴包位置所以不需要Dloader.path指定依賴包

總結(jié) 

到此這篇關(guān)于SpringBoot打jar包瘦身方法的文章就介紹到這了,更多相關(guān)SpringBoot打jar包瘦身內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring-boot-thin-launcher插件分離jar包的依賴和配置方式

    spring-boot-thin-launcher插件分離jar包的依賴和配置方式

    這篇文章主要介紹了spring-boot-thin-launcher插件分離jar包的依賴和配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • seata的部署和集成詳細(xì)介紹

    seata的部署和集成詳細(xì)介紹

    這篇文章主要介紹了Java seata的部署和集成,文章中有詳細(xì)的代碼示例和圖片講解,對學(xué)習(xí)seata有一定的參考價值,需要的朋友可以參考一下
    2023-04-04
  • SpringBoot中使用Quartz管理定時任務(wù)的方法

    SpringBoot中使用Quartz管理定時任務(wù)的方法

    這篇文章主要介紹了SpringBoot中使用Quartz管理定時任務(wù)的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • 詳解Java策略模式

    詳解Java策略模式

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著Java策略模式展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • jvm虛擬機類加載機制詳解

    jvm虛擬機類加載機制詳解

    本文主要介紹了 jvm虛擬機類加載機制詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • java排查一個線上死循環(huán)cpu暴漲的過程分析

    java排查一個線上死循環(huán)cpu暴漲的過程分析

    這篇文章主要介紹了java排查一個線上死循環(huán)cpu暴漲的過程分析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • servlet實現(xiàn)用戶登錄小程序

    servlet實現(xiàn)用戶登錄小程序

    這篇文章主要為大家詳細(xì)介紹了servlet實現(xiàn)用戶登錄的小程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Spring?多數(shù)據(jù)源方法級別注解實現(xiàn)過程

    Spring?多數(shù)據(jù)源方法級別注解實現(xiàn)過程

    多數(shù)據(jù)源管理是Spring框架中非常重要的一部分,它可以提高應(yīng)用程序的靈活性和可靠性,從而更好地滿足業(yè)務(wù)需求,這篇文章主要介紹了Spring?多數(shù)據(jù)源方法級別注解實現(xiàn),需要的朋友可以參考下
    2023-07-07
  • SpringBoot調(diào)用WebService接口的實現(xiàn)示例

    SpringBoot調(diào)用WebService接口的實現(xiàn)示例

    本文主要介紹了SpringBoot調(diào)用WebService接口的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • IDEA檢查項目的jdk版本需要看的地方

    IDEA檢查項目的jdk版本需要看的地方

    這篇文章主要介紹了IDEA檢查項目的jdk版本需要看的地方,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06

最新評論

石台县| 景宁| 上杭县| 高州市| 衡东县| 革吉县| 上栗县| 布拖县| 丹棱县| 仪征市| 毕节市| 永济市| 叙永县| 增城市| 荃湾区| 金堂县| 宁陕县| 鄯善县| 颍上县| 竹北市| 肥城市| 南投县| 射阳县| 应城市| 红安县| 五指山市| 禄劝| 鹿邑县| 启东市| 准格尔旗| 青岛市| 常熟市| 介休市| 玉树县| 博乐市| 双牌县| 高阳县| 柳林县| 陆河县| 石景山区| 平泉县|