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ì)把依賴的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ì)將依賴的jar包全部打包進(jìn)去。該文件包含了所有的依賴和資源文件,可以直接在命令行或者傳統(tǒng)的 Java Web 服務(wù)器上啟動(dòng)運(yùn)行。
二 maven的屬性介紹
2.1 插件標(biāo)簽
<!--使用的插件列表 。 -->
<plugins>
<!--plugin元素包含描述插件所需要的信息。 -->
<plugin>
<!--插件在倉庫里的group ID -->
<groupId />
<!--插件在倉庫里的artifact ID -->
<artifactId />
<!--被使用的插件的版本(或版本范圍) -->
<version />
<!--是否從該插件下載Maven擴(kuò)展(例如打包和類型處理器),由于性能原因,只有在真需要下載時(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)建過程中的目標(biāo),或者匹配繼承過程中需要合并的執(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)目引入插件所需要的額外依賴 -->
<dependencies>
<!--參見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類型的依賴
默認(rèn)情況下,repackage命令所生成的包,會(huì)把項(xiàng)目中所有依賴都打進(jìn)去
但其實(shí)在項(xiàng)目中scope為provided的依賴,比如 lombok、mybatis-plus等,只作用于編譯階段,編譯完成就沒用了。若除去provided依賴,可以使用如下的配置:

2.3.2 指定Mainclass類
如果未指定,main將使用找到的第一個(gè)包含方法的編譯類。也就是說如果只有一個(gè)main方法,那不需要去指定,如果你這個(gè)模塊存在兩個(gè)主類,那么就需要在插件中指定具體哪個(gè)啟動(dòng)類了。
layout 屬性用來指定打成 jar 還是war 文件,可用的值包括:ZIP 、JAR 、WAR、 NONE 。默認(rèn)JAR

2.3.3 在使用spring-boot-maven-plugin的下生成普通的jar包
前面說了,如果使用該插件,那么打出來的包是一個(gè)可執(zhí)行的jar包,這樣的jar包,在被別的項(xiàng)目引用的時(shí)候,可能會(huì)出問題。那如何打成一個(gè)普通的jar包。
1.第一種:通過命令
mvn clean package -D spring-boot.repackage.skip=true
加上-Dspring-boot.repackage.skip=true參數(shù)即可,此時(shí)只會(huì)生成一個(gè)普通的jar包
2.第2種:配置

這兩種方式打出來的包就是沒有依賴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沒有打包進(jìn)去、Jar包沒有被使用的解決方法
- SpringBoot Maven打包插件spring-boot-maven-plugin無法解析原因
- 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)紅問題
- SpringBoot整合mybatis-generator-maven-plugin的方法
- Springboot maven plugin插件原理及作用
- SpringBoot Maven 項(xiàng)目 pom 中的 plugin 插件用法小結(jié)
相關(guān)文章
SpringBoot整合OpenClaw技能系統(tǒng)的實(shí)戰(zhàn)指南
OpenClaw 雖然能直接通過聊天軟件指揮 AI 干活,但在企業(yè)場(chǎng)景里,我們總不能指望財(cái)務(wù)大姐在 Telegram 里敲命令來跑報(bào)表吧?本文教你用 SpringBoot 搭建一個(gè)企業(yè)級(jí)技能中臺(tái),把 OpenClaw 的 5700+ 技能收編進(jìn) Java 體系,需要的朋友可以參考下2026-03-03
SpringCloud集成和使用OpenFeign的教程指南
在微服務(wù)架構(gòu)中,服務(wù)間的通信是至關(guān)重要的,SpringCloud作為一個(gè)功能強(qiáng)大的微服務(wù)框架,為我們提供了多種服務(wù)間通信的方式,其中,OpenFeign是一個(gè)聲明式的Web服務(wù)客戶端,它使得編寫Web服務(wù)客戶端變得更加簡單,本文將詳細(xì)介紹如何在SpringCloud項(xiàng)目中集成和使用OpenFeign2024-10-10
SpringBoot中緩存@Cacheable出錯(cuò)的問題解決
本文主要介紹了SpringBoot中緩存@Cacheable出錯(cuò)的問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-10-10
MyBatis關(guān)聯(lián)查詢的實(shí)現(xiàn)
本文圍繞MyBatis展開,介紹了關(guān)聯(lián)查詢,包括多對(duì)一關(guān)聯(lián)association和一對(duì)多關(guān)聯(lián)collection的使用方法及代碼實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-04-04
Java中如何使用正則表達(dá)式提取各種類型括號(hào)中的內(nèi)容
最近在工作中遇到一個(gè)問題,就是需要一個(gè)字符串中每一個(gè)中括號(hào)里的內(nèi)容,下面這篇文章主要給大家介紹了關(guān)于Java中如何使用正則表達(dá)式提取各種類型括號(hào)中的內(nèi)容,需要的朋友可以參考下2023-06-06
幾句話說清session,cookie和token的區(qū)別及說明
這篇文章主要介紹了幾句話說清session,cookie和token的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
使用Springboot實(shí)現(xiàn)健身房管理系統(tǒng)
這篇文章主要介紹了使用Springboot如何實(shí)現(xiàn)健身房管理系統(tǒng),希望對(duì)你有所幫助2021-07-07

