springboot多包工程闻鉴,在使用maven進(jìn)行打包的時(shí)候,一直提示“程序包xxx不存在茂洒,找不到符號(hào)”孟岛,但項(xiàng)目是可以正常啟動(dòng)運(yùn)行的,開(kāi)始一直以為是maven哪里沒(méi)有配置好導(dǎo)致的,后來(lái)才發(fā)現(xiàn)原來(lái)是springboot的maven插件導(dǎo)致的渠羞。
項(xiàng)目結(jié)構(gòu):
xxx-parent:頂級(jí)父工程
xxx-a:子項(xiàng)目1
xxx-b:子項(xiàng)目2
xxx-c:子項(xiàng)目3
依賴關(guān)系:
a -> b -> c,從左到右次询,依次被依賴(c依賴b荧恍,b依賴a)
問(wèn)題場(chǎng)景:
在使用mvn package的時(shí)候,一直提示“程序包xxx不存在屯吊,找不到符號(hào)”送巡,開(kāi)始以為是依賴的上層包沒(méi)打好,仔細(xì)檢查后發(fā)現(xiàn)都沒(méi)問(wèn)題盒卸,就算將本地倉(cāng)庫(kù)中的依賴包清理之后骗爆,重新install打包也還是有這個(gè)問(wèn)題
原因分析:
因?yàn)橹暗膕pringmvc出現(xiàn)過(guò)類(lèi)似的問(wèn)題(Maven打包失敗,提示“找不到符號(hào)”)蔽介,所以一開(kāi)始也以為是本地倉(cāng)庫(kù)的緩存所致摘投,浪費(fèi)了好長(zhǎng)時(shí)間,后來(lái)才發(fā)現(xiàn)原來(lái)是springboot自身的編譯插件spring-boot-maven-plugin導(dǎo)致的虹蓄。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
如上犀呼,就是springboot的maven插件,用這個(gè)插件打包的Jar包可以直接運(yùn)行薇组,但是不可依賴圆凰!
解決方案(三選一):
1、不要將此插件放到頂級(jí)父工程中体箕,在需要打成可執(zhí)行jar的地方添加就好了,如果是需要被依賴的挑童,就不要添加此插件(如上述案例中累铅,就是xxx-a、xxx-b不加站叼,xxx-c需要加)娃兽;
2、在需要對(duì)外提供依賴的項(xiàng)目的pom里設(shè)置(如本項(xiàng)目的xxx-a尽楔、xxx-b)投储,這樣設(shè)置會(huì)讓項(xiàng)目生成兩個(gè)jar:一個(gè)可執(zhí)行jar,一個(gè)可依賴的jar阔馋;
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 生成可執(zhí)行的jar的名字:xxx-exec.jar -->
<!-- 不固定玛荞,寫(xiě)成abcd都可以 -->
<classifier>exec</classifier>
</configuration>
</plugin>
</plugins>
</build>
3、在configuration中加入skip標(biāo)簽呕寝,取消生成可執(zhí)行jar勋眯;
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
最后給大家贈(zèng)送一本書(shū)籍《深入淺出Spring Boot》需要的朋友可以來(lái)私信我領(lǐng)取
篇幅有限就不過(guò)多的介紹了需要私信我就ok了
書(shū)籍免費(fèi)獲取方式:關(guān)注然后簡(jiǎn)信“資料”即可獲得文檔領(lǐng)取方式
同時(shí)希望大家領(lǐng)到之后不要做收藏黨塞蹭!而是能夠花一些時(shí)間認(rèn)真看完文檔,讓它真正發(fā)揮出價(jià)值來(lái)讶坯。