溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用maven war包打包去除jar包

發(fā)布時(shí)間:2021-07-23 16:54:59 來(lái)源:億速云 閱讀:579 作者:chen 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹“如何使用maven war包打包去除jar包”,在日常操作中,相信很多人在如何使用maven war包打包去除jar包問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”如何使用maven war包打包去除jar包”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

1、pom文件配置

1.1 添加maven-dependency-plugin插件用于將引用的jar包拷貝到指定的路徑

便于后續(xù)tomcat啟動(dòng)指定依賴包路徑

<!--拷貝依賴到j(luò)ar外面的lib目錄-->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>copy</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>                <!--指定的依賴路徑-->
                <outputDirectory>
                    ${project.build.directory}/lib
                </outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

使用這個(gè)插件構(gòu)建完之后的目錄結(jié)構(gòu)多了一個(gè)lib目錄(即上述配置的outputDirectory指定的路徑),里面是依賴的jar包:

如何使用maven war包打包去除jar包

如何使用maven war包打包去除jar包

1.2 添加maven-war-plugin插件

<!-- war包 -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <packagingExcludes>
            <!--排除具體jar包-->
            <!--WEB-INF/lib/commons-io-2.5.jar,-->
            <!--WEB-INF/lib/commons-lang3-3.6.jar,-->
            <!--排除不是以commons-開(kāi)頭的所有jar包-->
            <!--%regex[WEB-INF/lib/(?!commons-).*.*.jar]-->
            <!--排除以commons-開(kāi)頭的所有jar包-->
            %regex[WEB-INF/lib/(commons-).*.*.jar]
        </packagingExcludes>
    </configuration>
</plugin>

上述構(gòu)建配置后打出的war包就會(huì)去除掉除war包里/WEB-INF/lib/下面相應(yīng)的jar包,使得發(fā)布包大小變小,加快上傳服務(wù)器速度,如下圖,加壓war包,查看WEB-INF/lib目錄,沒(méi)有包含commons開(kāi)頭的jar包,說(shuō)明已經(jīng)去除掉了:

如何使用maven war包打包去除jar包

原先war包里的結(jié)構(gòu)是包含很多commons開(kāi)頭的jar,如下圖:

如何使用maven war包打包去除jar包

按照上述思路我們就可以將lib下的所有jar都去掉,去掉依賴jar以后就可以通過(guò)配置tomcat引用外部lib路徑來(lái)部署項(xiàng)目了

附注:

若存在不同版本依賴:比如項(xiàng)目A依賴Y庫(kù)的1.0版本,項(xiàng)目B依賴Y庫(kù)的2.0版本,那么可能會(huì)出現(xiàn)版本依賴沖突(兩個(gè)版本不兼容的情況下)

解決方案:

1、能做到版本一致就保持使用同一個(gè)版本,盡可能保證多個(gè)項(xiàng)目使用同一個(gè)庫(kù)的版本一致

2、讓項(xiàng)目各自依賴所需的版本并打進(jìn)war包中,把其他同版本的jar包放在同一個(gè)共享包下

測(cè)試發(fā)現(xiàn)依賴在查找時(shí)從上往下找,匹配到就用第一個(gè)

如下圖會(huì)使用comm-0.0.1.jar版本的

如何使用maven war包打包去除jar包

springboot 打包插件去除jar包瘦身

到此,關(guān)于“如何使用maven war包打包去除jar包”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI