Maven导入本地仓库的jar包报错———解决方法

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

 

posted @ 2021-07-13 20:06  _kerry  阅读(1041)  评论(0编辑  收藏  举报