您的位置:首頁 >法制 >

spring-boot-maven-plugin插件詳解_環球快資訊

2023-06-25 06:21:59 來源:博客園
一、 為什么Spring Boot項目自帶這個插件

當我們在SpringBoot官方下載一個腳手架時,會發現pom.xml會自帶spring-boot-maven-plugin插件


(資料圖片僅供參考)

4.0.0org.springframework.bootspring-boot-starter-parent2.7.12com.zhuangpomaven-plugin0.0.1-SNAPSHOTmaven-plugin1.8org.springframework.bootspring-boot-starterorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-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 前面的內容作為插件前綴。

三、該插件常見使用場景1、排除provided類型的依賴

默認情況下,repackage命令所生成的包,會把項目中所有的依賴都打進去。

但其實在項目中scope為provided的依賴,比如 lombok、mybatis-plus等,只作用于編譯階段,編譯完成就沒用了。

若除去provided依賴,可以使用如下的配置:

org.springframework.bootspring-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.bootspring-boot-maven-plugintrue

這兩種方式打出來的包就是沒有依賴jar的普通包了。

聲明: 公眾號如需轉載該篇文章,發表文章的頭部一定要 告知是轉至公眾號: 后端元宇宙。同時也可以問本人要markdown原稿和原圖片。其它情況一律禁止轉載!

關鍵詞: