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模塊)
