maven中springboot-maven-plugin的5種打包方式
一 maven的打包方式
1.1 不使用maven-plugin插件普通方式打包
使用 mvn package 命令 打包
生成好的jar包
發(fā)現(xiàn)jar包的大小只有幾kb,執(zhí)行jar包看看能否啟動(dòng)。
結(jié)論:一般的maven項(xiàng)目的打包命令,不會(huì)把依賴(lài)的jar包也打包進(jìn)去的,只是會(huì)放在jar包的同目錄下,能夠引用就可以了。
1.2 使用maven-plugin插件
使用 mvn package 命令 打包
執(zhí)行命令 java -jar xxx.jar, 結(jié)果運(yùn)行成功。
總結(jié):spring-boot-maven-plugin插件,會(huì)將依賴(lài)的jar包全部打包進(jìn)去。該文件包含了所有的依賴(lài)和資源文件,可以直接在命令行或者傳統(tǒng)的 Java Web 服務(wù)器上啟動(dòng)運(yùn)行。
二 maven的屬性介紹
2.1 插件標(biāo)簽
<!--使用的插件列表 。 --> <plugins> <!--plugin元素包含描述插件所需要的信息。 --> <plugin> <!--插件在倉(cāng)庫(kù)里的group ID --> <groupId /> <!--插件在倉(cāng)庫(kù)里的artifact ID --> <artifactId /> <!--被使用的插件的版本(或版本范圍) --> <version /> <!--是否從該插件下載Maven擴(kuò)展(例如打包和類(lèi)型處理器),由于性能原因,只有在真需要下載時(shí),該元素才被設(shè)置成enabled。 --> <extensions /> <!--在構(gòu)建生命周期中執(zhí)行一組目標(biāo)的配置。每個(gè)目標(biāo)可能有不同的配置。 --> <executions> <!--execution元素包含了插件執(zhí)行需要的信息 --> <execution> <!--執(zhí)行目標(biāo)的標(biāo)識(shí)符,用于標(biāo)識(shí)構(gòu)建過(guò)程中的目標(biāo),或者匹配繼承過(guò)程中需要合并的執(zhí)行目標(biāo) --> <id /> <!--綁定了目標(biāo)的構(gòu)建生命周期階段,如果省略,目標(biāo)會(huì)被綁定到源數(shù)據(jù)里配置的默認(rèn)階段 --> <phase /> <!--配置的執(zhí)行目標(biāo) --> <goals /> <!--配置是否被傳播到子POM --> <inherited /> <!--作為DOM對(duì)象的配置 --> <configuration /> </execution> </executions> <!--項(xiàng)目引入插件所需要的額外依賴(lài) --> <dependencies> <!--參見(jiàn)dependencies/dependency元素 --> <dependency> ...... </dependency> </dependencies> <!--任何配置是否被傳播到子項(xiàng)目 --> <inherited /> <!--作為DOM對(duì)象的配置 --> <configuration /> </plugin> </plugins>
2.2 goal的作用
該插件提供了7個(gè)maven goal
build-image: 將程序使用 buildpack 打包進(jìn)容器鏡像中。
build-info:生成項(xiàng)目的構(gòu)建信息文件 build-info.properties
help:顯示幫助信息。調(diào)用mvn spring-boot:help -Ddetail=true -Dgoal=以顯示參數(shù)詳細(xì)信息。
repackage:默認(rèn)的值,可生成可執(zhí)行的jar包或war包。插件的核心goal (在 mvnpackage
執(zhí)行之后,這個(gè)命令再次打包生成可執(zhí)行的 jar,同時(shí)將 mvnpackage
生成的 jar 重命名為 *.origin)。
run:運(yùn)行 Spring Boot 應(yīng)用
start:在集成測(cè)試階段,控制生命周期
stop:在集成測(cè)試階段,控制生命周期
2.3 該插件的使用場(chǎng)景
2.3.1 排除provided類(lèi)型的依賴(lài)
默認(rèn)情況下,repackage命令所生成的包,會(huì)把項(xiàng)目中所有依賴(lài)都打進(jìn)去
但其實(shí)在項(xiàng)目中scope為provided的依賴(lài),比如 lombok、mybatis-plus等,只作用于編譯階段,編譯完成就沒(méi)用了。若除去provided依賴(lài),可以使用如下的配置:
2.3.2 指定Mainclass類(lèi)
如果未指定,main將使用找到的第一個(gè)包含方法的編譯類(lèi)。也就是說(shuō)如果只有一個(gè)main方法,那不需要去指定,如果你這個(gè)模塊存在兩個(gè)主類(lèi),那么就需要在插件中指定具體哪個(gè)啟動(dòng)類(lèi)了。
layout 屬性用來(lái)指定打成 jar 還是war 文件,可用的值包括:ZIP 、JAR 、WAR、 NONE 。默認(rèn)JAR
2.3.3 在使用spring-boot-maven-plugin的下生成普通的jar包
前面說(shuō)了,如果使用該插件,那么打出來(lái)的包是一個(gè)可執(zhí)行的jar包,這樣的jar包,在被別的項(xiàng)目引用的時(shí)候,可能會(huì)出問(wèn)題。那如何打成一個(gè)普通的jar包。
1.第一種:通過(guò)命令
mvn clean package -D spring-boot.repackage.skip=true
加上-Dspring-boot.repackage.skip=true參數(shù)即可,此時(shí)只會(huì)生成一個(gè)普通的jar包
2.第2種:配置
這兩種方式打出來(lái)的包就是沒(méi)有依賴(lài)jar的普通包了。
到此這篇關(guān)于maven中springboot-maven-plugin的5種打包方式:的文章就介紹到這了,更多相關(guān)maven springboot-maven-plugin打包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Springboot 使用 maven-resources-plugin 打包變量替換jar沒(méi)有打包進(jìn)去、Jar包沒(méi)有被使用的解決方法
- SpringBoot Maven打包插件spring-boot-maven-plugin無(wú)法解析原因
- SpringBoot中的maven插件spring-boot-maven-plugin使用
- springboot?maven?plugin報(bào)紅的解決辦法
- SpringBoot如何整合mybatis-generator-maven-plugin 1.4.0
- Springboot的spring-boot-maven-plugin導(dǎo)入失敗的解決方案
- 解決IDEA springboot"spring-boot-maven-plugin"報(bào)紅問(wèn)題
- SpringBoot整合mybatis-generator-maven-plugin的方法
- Springboot maven plugin插件原理及作用
- SpringBoot Maven 項(xiàng)目 pom 中的 plugin 插件用法小結(jié)
相關(guān)文章
java 通過(guò) SmbFile 類(lèi)操作共享文件夾的示例
這篇文章主要介紹了java 通過(guò) SmbFile 類(lèi)操作共享文件夾,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02SpringBoot整合quartz實(shí)現(xiàn)定時(shí)任務(wù)
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何整合quartz實(shí)現(xiàn)定時(shí)任務(wù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-10-10基于@AllArgsConstructor與@Value共用的問(wèn)題解決
這篇文章主要介紹了基于@AllArgsConstructor與@Value共用的問(wèn)題解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09當(dāng)面試官問(wèn)我ArrayList和LinkedList哪個(gè)更占空間時(shí),我是這么答的(面試官必問(wèn))
今天介紹一下Java的兩個(gè)集合類(lèi),ArrayList和LinkedList,這兩個(gè)集合的知識(shí)點(diǎn)幾乎可以說(shuō)面試必問(wèn)的。感興趣的朋友跟隨小編一起看看吧2020-08-08Java安全之Tomcat6 Filter內(nèi)存馬問(wèn)題
這篇文章主要介紹了Java安全之Tomcat6 Filter內(nèi)存馬,通過(guò)本文探討下Tomcat6與Tomcat8之間的區(qū)別,主要看下tomcat6和tomcat8之間createFilterChain不相同的地方 看到ApplicationFilterFactory#createFilterChain,需要的朋友可以參考下2022-10-10客戶(hù)端Socket與服務(wù)端ServerSocket串聯(lián)實(shí)現(xiàn)網(wǎng)絡(luò)通信
這篇文章主要為大家介紹了客戶(hù)端Socket與服務(wù)端ServerSocket串聯(lián)實(shí)現(xiàn)網(wǎng)絡(luò)通信的內(nèi)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-03-03Java之String類(lèi)型的有序Id批量生成器詳解
這篇文章主要介紹了Java之String類(lèi)型的有序Id批量生成器,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04Java使用Apache Commons高效處理CSV文件的操作指南
在 Java 開(kāi)發(fā)中,CSV(Comma-Separated Values,逗號(hào)分隔值)是一種常見(jiàn)的數(shù)據(jù)存儲(chǔ)格式,廣泛用于數(shù)據(jù)交換和簡(jiǎn)單的存儲(chǔ)任務(wù),本文將介紹Java使用Apache Commons高效處理CSV文件的操作指南,需要的朋友可以參考下2025-03-03Android studio按鈕點(diǎn)擊頁(yè)面跳轉(zhuǎn)詳細(xì)步驟
在Android應(yīng)用程序中,頁(yè)面跳轉(zhuǎn)是非常常見(jiàn)的操作,下面這篇文章主要給大家介紹了關(guān)于Android studio按鈕點(diǎn)擊頁(yè)面跳轉(zhuǎn)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06