日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

前言

工作中終于遇到比較好玩的東西了,最近被給了一個需求,將pom中的第三方依賴移到外面而不直接打包進jar包。那直接打包有什么問題嗎?下面我們一起來看看。

 

直接打包的缺點

首先宣讀一下直接打包的“三大罪”!!!

  • 如果項目依賴的第三方包非常多,那么最終提供出去的jar包將非常大,上傳所需時間也非常多
  • 如果依賴的第三方包版本升級了,想要直接用最新的版本就只能修改版本然后重新打包了
  • 如果依賴的某個第三方包有安全漏洞,那么必須換版本,換版本的話就必須重新進行打包。就暴露出fastjson的安全漏洞,版本小于1.2.68存在反序列化的漏洞

第二點和第三點差不多,都是由版本導致重新打包
但是如果我們打包時不將依賴的第三方包打包進去,那么最后的jar包不僅小,而且當依賴的第三方版本發(fā)生變化時也不需要重新打包了,心動不如行動,現(xiàn)在對自己的項目手起刀落改造一下吧

 

pom文件的修改

在maven項目中配置打包相關(guān)的東西是在pom文件中的,一般情況下,在pom中如果不需要將第三方包排除在外,都是這樣配置的:

<build>
    <finalName>authsdk-service-${version}</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <finalName>authsdk-service-${version}</finalName>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <encoding>${project.build.sourceEncoding}</encoding>
                <source>8</source>
                <target>8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

看一下打包后jar包的大小

SpringBoot:拒絕大文件,夏天到了,來給jar包瘦個身

 

大小為27515KB,可以發(fā)現(xiàn)jar包的內(nèi)容中,在BOOT-INF/lib目錄下都是依賴的第三方包

SpringBoot:拒絕大文件,夏天到了,來給jar包瘦個身

 

發(fā)現(xiàn)了嗎?真相只有一個!導致打包出來的jar包大的原因就是這些依賴的第三方包。
那既然問題原因出現(xiàn)了,就可以開始對癥下藥解決問題了,我們對pom文件做一個改動,讓它不將第三方依賴打包進去,修改后的配置:

 <build>
    <finalName>authsdk-service-${version}</finalName>
    <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
             <configuration>
                <!-- 此處為項目的主類路徑 -->
                <mainClass>com.xxx.authsdk.AuthsdkServiceApplication</mainClass>
                 <layout>ZIP</layout>
                <includes>
                    <include>
                        <!-- 排除所有的第三方依賴的Jar包 -->
                         <groupId>nothing</groupId>
                        <artifactId>nothing</artifactId>
                    </include>
                </includes>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                 </execution>
            </executions>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                 <source>8</source>
                 <target>8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

修改完后重新打包

SpringBoot:拒絕大文件,夏天到了,來給jar包瘦個身

 

jar包大小變?yōu)?702KB,瘦身效果很明顯!!!相比之前直接變小了94%,同時查看jar包內(nèi)容/BOOT-INF下沒有l(wèi)ib文件夾了,確實沒有將第三方依賴打包進去。
那到這里是不是已經(jīng)完事了?不,其實還可以做得更好!因為打包時沒有將第三方依賴打包進去,因此啟動的時候需要指定第三方依賴的位置程序才能正常啟動,這就要求我們必須從最開始未瘦身的jar包中將lib文件夾給摳出來,但這樣的做法就稍微有點low了。maven提供了一種顯示指定lib文件夾保存路徑的方法,在之前的pom文件基礎(chǔ)上加下如下配置

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <!-- 復(fù)制第三方 jar 到指定路徑下 下 -->
                <outputDirectory>G:/JAVA工程/authorize_service/lib</outputDirectory>
                <excludeScope>provided</excludeScope>
                <!-- 配置的作用:跳過復(fù)制第三方依賴這一步。這是在首次上傳
                第三方依賴到服務(wù)器之后,啟用這個選項,可以不用在打包時
                重復(fù)復(fù)制,節(jié)省時間。-->
                <skip>false</skip>
            </configuration>
        </execution>
    </executions>
</plugin>

通過<outputDirectory>指定lib目錄保存路徑為當前項目路徑下

 

項目啟動

因為沒有將第三方依賴打包進去,因此啟動時必須顯示指定第三方依賴路徑

  • 相對路徑:java -Dloader.path=lib -jar xxx.jar
  • 絕對路徑:java -Dloader.path=/xxx/lib -jar xxx.jar

 

最后

Java的學習是一條漫長的道路,每個地方都是值得學習的內(nèi)容。

在實際工作中,我們會遇到各種各樣的需求,但是不要慌!只要我們靜下心來,弄清需求,理清邏輯,打磨細節(jié),做到這三點,絕大部分的難題都可以迎刃而解。

分享到:
標簽:SpringBoot
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定