記 從零搭建一個(gè)spring boot 多模塊(models) 打包 含多個(gè)web工程打包細(xì)節(jié)與問題記錄

項(xiàng)目基礎(chǔ)結(jié)構(gòu)(項(xiàng)目地址 :https://github.com/luocaca/models.git


--

開局一張圖。內(nèi)容全靠編,bug全靠踩...



1.最原始spring boot 項(xiàng)目結(jié)構(gòu)。如下

? 現(xiàn)需要將commom ? entity ?mapper ?service 抽出來,成立單獨(dú) 的model

? 抽出model 格式如下 (刪除api內(nèi) commom ? entity ?mapper ?service包 )

?新建 ??commom ? entity ?mapper ?service 4大model


?api 依賴 4大model?


拆分后第一個(gè)問題


來來來。運(yùn)行一下,看下會爆什么錯(cuò)。別他坑一波。肯定要看清楚(找不到類)

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'otherservice.PersonService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

-解決方法

在 model-service.src.main.java 下面新建 me.luocaca.model.service包,然后把PersonService拖過去


拖之前



拖之后

修改后,重新運(yùn)行 ,ok


訪問一下

數(shù)據(jù)庫長這樣,需要自己建一張


2.接下來介紹一下打包流程,以及將

打包結(jié)構(gòu)要從最底層開始打包

也就是依賴關(guān)系過來一個(gè)一個(gè)model進(jìn)行打包

本項(xiàng)目依賴關(guān)系梳理一下(models為最上層 ?打包方式為 pom )

由于本項(xiàng)目由2個(gè)可獨(dú)立打包運(yùn)行的web項(xiàng)目(api +web)?

+

?多個(gè)依賴(service mapper entity commom)項(xiàng)目組成


讓我們簡單粗暴的看一下依賴關(guān)系(一圖堪比千言萬語)


依賴關(guān)系圖

看清楚沒有?

依賴關(guān)系


api ?—> ?service? —> ?mapper(dao)? —> entity? —> ?commom( 最底層,不依賴上層 )?

打包流程

commom?—>entity??—> mapper(dao)? —>?service??—>?api??



先簡單說明一下 什么是打包,再來說為什么要反著打包,



install之后看看效果(找到maven倉庫,看看文件結(jié)構(gòu))


可以看出,maven 打包的時(shí)候,會將第三方model 全部導(dǎo)入到j(luò)ar包,而第三方的庫都是網(wǎng)上下載到repository ,然后從倉庫

中找到 .jar ?.pom ?.war ?各種項(xiàng)目包,拷貝到 自己項(xiàng)目的 ?exec.jar 包里面,

→_→ 讓我們看一下對比一下.jar 與 ?exec.jar的結(jié)構(gòu)圖?



.jar圖


exec.jar圖

看明白沒。哈哈。exec.jar里面很多jar包。


看到自己寫的model打包后的庫沒有

這里因?yàn)槲乙呀?jīng)打包過 commom ?entity ?mapper service 4個(gè)庫,并且install 到maven 倉庫,api才能被打包成功?


現(xiàn)在可以解釋什么叫方向打包。從最底層,打包完整之后。再打包上層 model?

打包流程

commom?—>entity??—> mapper(dao)? —>?service??—>?api??

假如 service?沒有 ? package + install ?直接 ?pai 進(jìn)行 package +install ,會出現(xiàn) 找不到 model-service.0.0.1-SNAPSHOT.jar?

因?yàn)樵谖覀冃陆ㄒ粋€(gè)model 的時(shí)候。maven里面是沒有我們 service的包的。只有打包 并 install 之后,model-service.0.0.1-SNAPSHOT.jar 包


打包之前


打包之后

其他 mapper entity commom 同理。。。。。。。。。自己體會。先這樣。。。。。不說了。下次說說jsp ,很多細(xì)節(jié)bug。要點(diǎn)出。

大神勿噴。

項(xiàng)目地址:https://github.com/luocaca/models.git


應(yīng)為篇幅原因,這里主要講api項(xiàng)目創(chuàng)建到打包發(fā)布過程,等下會在獨(dú)立一批文章,記錄web項(xiàng)目引入jsp與打包發(fā)布流程的采坑過程。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容