spring-boot-maven-plugin:打包時(shí)排除provided依賴問題
spring-boot-maven-plugin:打包時(shí)排除provided依賴
spring-boot-maven-plugin 插件提供spring boot的maven打包支持。
項(xiàng)目中scope為provided的依賴,比如 lombok、mybatis-plus 等,只作用于編譯階段,編譯完成就可以功成身退了。
在spring maven打包時(shí),provided依賴會(huì)排除在包外,但springboot maven打包時(shí),還會(huì)將這些依賴打進(jìn) war 包的 lib-provided 文件夾里或 jar 包的 lib 文件夾里。
springboot項(xiàng)目構(gòu)建jar包或war包的命令為repackage,作用于maven生命周期的package階段,在 mvn package 執(zhí)行之后,這個(gè)命令再次打包生成可執(zhí)行的包,例如打jar包時(shí),生成可執(zhí)行jar包,同時(shí)將 mvn package 生成的 jar 重命名為 *.origin。
默認(rèn)情況下,repackage會(huì)將工程中引入的任何依賴打到包中。
以lombok為例,官方提供了以下方式可以將provided依賴從springboot項(xiàng)目包中排除。
<dependency> ? <groupId>org.projectlombok</groupId> ? <artifactId>lombok</artifactId> ? <scope>provided</scope> </dependency>
通過指定groupId和artifactId排除某個(gè)特定的依賴
<build> ? ?<plugins> ? ? ? ?<plugin> ? ? ? ? ? ?<groupId>org.springframework.boot</groupId> ? ? ? ? ? ?<artifactId>spring-boot-maven-plugin</artifactId> ? ? ? ? ? ?<configuration> ? ? ? ? ? ? ? ?<excludes> ? ? ? ? ? ? ? ? ? ?<exclude> ? ? ? ? ? ? ? ? ? ? ? ?<groupId>org.projectlombok</groupId> ? ? ? ? ? ? ? ? ? ? ? ?<artifactId>lombok</artifactId> ? ? ? ? ? ? ? ? ? ?</exclude> ? ? ? ? ? ? ? ?</excludes> ? ? ? ? ? ?</configuration> ? ? ? ?</plugin> ? ?</plugins> </build>
指定groupId排除groupId相關(guān)的所有依賴
<build> ? ?<plugins> ? ? ? ?<plugin> ? ? ? ? ? ?<groupId>org.springframework.boot</groupId> ? ? ? ? ? ?<artifactId>spring-boot-maven-plugin</artifactId> ? ? ? ? ? ?<configuration> ? ? ? ? ? ? ? ?<excludeGroupIds>org.projectlombok</excludeGroupIds> ? ? ? ? ? ?</configuration> ? ? ? ?</plugin> ? ?</plugins> </build>
maven-compiler-plugin和spring-boot-maven-plugin的選擇
在搭建springboot項(xiàng)目時(shí)候,會(huì)遇到maven打包插件報(bào)錯(cuò)的情況,筆者做了一個(gè)測(cè)試,對(duì)這2種方式進(jìn)行一個(gè)驗(yàn)證
maven-compiler-plugin方式
此種方式打出的包是一個(gè)普通jar,并不能執(zhí)行,但是可以被引用其中的bean??梢渣c(diǎn)開其jar包一探究竟,發(fā)現(xiàn)并沒有把依賴打進(jìn)包里。

不含有root-inf,沒有依賴被打進(jìn)來。
spring-boot-maven-plugin方式
這種方式打出的包可執(zhí)行,但是我并沒有去驗(yàn)證其中的bean是否可以被引用。網(wǎng)上說不可被引用,有待進(jìn)一步驗(yàn)證。
打好的包到服務(wù)器上運(yùn)行,可運(yùn)行 ,且含有完整的依賴包


總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 基于spring-boot-maven-plugin插件打包lib文件外置的方法(layout模式為ZIP模式)
- springboot實(shí)現(xiàn)maven多模塊和打包部署
- Springboot 使用maven release插件執(zhí)行版本管理及打包操作
- maven?springboot如何將jar包打包到指定目錄
- Spring Boot Maven Plugin打包異常解決方案
- SpringBoot使用Maven插件進(jìn)行項(xiàng)目打包的方法
- SpringBoot+Maven 多模塊項(xiàng)目的構(gòu)建、運(yùn)行、打包實(shí)戰(zhàn)
- Spring Boot如何獲取maven打包時(shí)間
相關(guān)文章
Mybatis_plus基礎(chǔ)教程(總結(jié)篇)
這篇文章主要介紹了Mybatis_plus基礎(chǔ)教程(總結(jié)篇),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
輸出java進(jìn)程的jstack信息示例分享 通過線程堆棧信息分析java線程
通過ps到j(luò)ava進(jìn)程號(hào)將進(jìn)程的jstack信息輸出。jstack信息是java進(jìn)程的線程堆棧信息,通過該信息可以分析java的線程阻塞等問題。2014-01-01
Mybatis利用分頁插件PageHelper快速實(shí)現(xiàn)分頁查詢
如果你也在用MyBatis,建議嘗試該分頁插件,這一定是最方便使用的分頁插件,這篇文章主要給大家介紹了關(guān)于Mybatis利用分頁插件PageHelper快速實(shí)現(xiàn)分頁查詢的相關(guān)資料,PageHelper是一個(gè)Mybatis的分頁插件,負(fù)責(zé)將已經(jīng)寫好的sql語句,進(jìn)行分頁加工,需要的朋友可以參考下2021-08-08
java8中parallelStream性能測(cè)試及結(jié)果分析
本篇文章給大家用代碼實(shí)例做了segmentfaultjava8中parallelStream性能測(cè)試,并對(duì)測(cè)試結(jié)果做了說明,需要的朋友學(xué)習(xí)下吧。2018-01-01
Maven本地打包war包實(shí)現(xiàn)代碼解析
這篇文章主要介紹了Maven本地打包war包實(shí)現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
springmvc實(shí)現(xiàn)跨服務(wù)器文件上傳功能
這篇文章主要為大家詳細(xì)介紹了springmvc實(shí)現(xiàn)跨服務(wù)器文件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08

