時訊:spring-boot-maven-plugin插件詳解
時間:2023-06-25 08:26:54
當我們在SpringBoot官方下載一個腳手架時,會發現pom.xml會自帶spring-boot-maven-plugin插件
4.0.0 org.springframework.boot spring-boot-starter-parent 2.7.12 com.zhuangpo maven-plugin 0.0.1-SNAPSHOT maven-plugin 1.8 org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-maven-plugin
那為什么會自帶這個插件呢?
【資料圖】
我們知道Spring Boot項目,是可以通過java -jar 包名
啟動的
打包命令
mvn clean package
打包成功后就會生成一個jar包
試下是否可以通過java -jar 包名
啟動項目
發現是可以正常啟動。
這個時候我們去掉spring-boot-maven-plugin插件,通過 mvn clean package
再打一次包。
打包依然成功,包名也一樣,只是jar包大小有著天壤之別
發現只有3KB,之前的有17.7MB。
我們通過java -jar 包名
看能否啟動成功。
localhost:target xub$ java -jar maven-plugin-0.0.1-SNAPSHOT.jar maven-plugin-0.0.1-SNAPSHOT.jar中沒有主清單屬性
發現并不能啟動成功,這是為什么呢?
一般的maven項目的打包命令,不會把依賴的jar包也打包進去的,只是會放在jar包的同目錄下,能夠引用就可以了。
但是spring-boot-maven-plugin插件,會將依賴的jar包全部打包進去。該文件包含了所有的依賴和資源文件,可以直接在命令行或者傳統的 Java Web 服務器上啟動運行。
二、插件介紹1、插件標簽詳解 ......
2、內部goals該插件提供了7個maven goal
build-image
: 將程序使用 buildpack 打包進容器鏡像中。build-info
:生成項目的構建信息文件 build-info.propertieshelp
:顯示幫助信息。調用mvn spring-boot:help -Ddetail=true -Dgoal=以顯示參數詳細信息。repackage
:可生成可執行的jar包或war包。插件的核心goal。run
:運行 Spring Boot 應用start
:在集成測試階段,控制生命周期stop
:在集成測試階段,控制生命周期為什么這里插件名稱叫spring-boot?
原因
:自定義插件如果遵循 xxx-maven-plugin 的形式,maven 默認會將 maven-plugin 前面的內容作為插件前綴。
默認情況下,repackage命令所生成的包,會把項目中所有的依賴都打進去。
但其實在項目中scope為provided的依賴,比如 lombok、mybatis-plus等,只作用于編譯階段,編譯完成就沒用了。
若除去provided依賴,可以使用如下的配置:
org.springframework.boot spring-boot-maven-plugin org.projectlombok lombok
2、指定Mainclass類如果未指定,main將使用找到的第一個包含方法的編譯類。
也就是說如果只有一個main方法,那不需要去指定,如果你這個模塊存在兩個主類,那么就需要在插件中指定具體哪個啟動類了。
org.springframework.boot spring-boot-maven-plugin com.zhuangpo.mavenplugin.MavenPluginApplication ZIP
layout 屬性用來指定打成 jar 還是war 文件,可用的值包括:ZIP 、JAR 、WAR、 NONE 。默認JAR
3、在使用spring-boot-maven-plugin的下生成普通的jar包前面說了,如果使用該插件,那么打出來的包是一個可執行的jar包,這樣的jar包,在被別的項目引用的時候,可能會出問題。
那如何打成一個普通的jar包。
當然你可以把這個插件注釋掉,重新打包。不過這樣做未必太愚蠢啦。
解決辦法
第一種:通過命令
mvn clean package -D spring-boot.repackage.skip=true
加上-Dspring-boot.repackage.skip=true參數即可,此時只會生成一個普通的jar包
第二種:通過配置
org.springframework.boot spring-boot-maven-plugin true
這兩種方式打出來的包就是沒有依賴jar的普通包了。
聲明: 公眾號如需轉載該篇文章,發表文章的頭部一定要 告知是轉至公眾號: 后端元宇宙。同時也可以問本人要markdown原稿和原圖片。其它情況一律禁止轉載!
相關稿件
時訊:spring-boot-maven-plugin插件詳解
天天看點:1.06億人次,超2019年同期!端午出游很“熱”
世界熱消息:9省區市將現35℃以上高溫 內蒙古局地可達40℃
不良人:第六季究竟隱藏了多少伏筆,四大尸祖的秘密,究竟是什么
太陽三方交易官宣!比爾正式亮相聯手杜布沖冠 老板發聲感謝保羅
王啟蒙: 黃金下周行情價格走勢預測及黃金獨家多空最新操作建議
從盜竊犯到普京大廚,從沖鋒陷陣到反戈一擊……普里戈任:令人琢磨不透的人
視焦點訊!在丁字路上我三輪電動車左轉車頭已過黃線,有一輛摩托車直行碰到
重磅!新 Model 3 內飾曝光:加入線控轉向,揚聲器、座椅也有升級
泰坦號內爆5位富豪遇難!AI復原最后恐怖瞬間,設計缺陷真相公開_熱文
5月16日 孫立偉參贊陪同羅林泉大使參加質檢總局局長支樹平與希臘農村發展與食品部及地區發展部的會談_焦點滾動