Maven匯入本地倉庫的jar包報錯———解決方法
阿新 • • 發佈:2021-07-13
Failed to read artifact descriptor for com.kerry.dubbo.teacher:api:jar:1.0錯誤解決
下面是前言環境,想看解決方法,可直接下滑至底部
前言:
今天做的一個微服務小案例(Teacher模組與Student模組互動)
通過dubbo + zookeeper 和 SpringBoot技術將兩個模組進行拆分後,將模組提供的Service服務註冊到Zookeeper做的註冊中心上。
包結構如下:
案例中的各個moudel不做過多解釋,這裡大概解釋一下:
api:負責存放模組提供的Service的上級介面。其他需要使用到
該模組服務的只需要匯入該模組的API即可知道該模組所提
供的服務功能,隨後去註冊中心(ZK)上獲取對應的服務。
moudel :負責存放該模組的實體類(pojo)和實體類對應的Mapper
server:提供該模組服務(Service)的主要實現,隨後註冊到註冊
中心(ZK)上,還可以在其中去呼叫其他模組的服務。
在做完Teacher模組之後,我想在Student模組中去使用到Teacher模組,此時在從註冊中心獲取服務之前,我需要先匯入Teacher模組的api.jar。
這個時候我就通過Maven的Lifecycle的install功能對API這個Moudel進行打包。
由於我兩個模組都是用的同一個Maven本地倉庫,所以打包之後我只需要去另一個模組直接載入就行了。
隨後我來到Student模組 中在server的pom.xml對Teacher的api進行載入
此時專案中就報出了錯誤
Failed to read artifact descriptor for com.kerry.dubbo.teacher:api:jar:1.0錯誤
並且我原先在本地倉庫匯入的Student模組的api.jar也跟著報錯
在Maven載入包的時候,所有匯入的包統統失敗
此時我們看專案已經匯入的Jar中可以發現Teacher模組的API包已經匯入進了專案並且已經看得到裡面的類了
由此我們可以推斷出問題並不是出現在找不到JAR包上
最後通過查閱資料發現問題是:
如果說,專案是通過maven來管理構建專案且通過各個module形式存在,那麼在deploye的時候需要將父POM檔案也部署到私服上,否則會出現如上問題
也就是說,我們在進行模組打包的時候需要將整個專案打包,而不是隻打包模組中單獨的一個Moudel(API模組)
所有文章均為原創,轉載請註明出處。