问题描述
用SpringCloud构建的微服务中,会把不同业务拆分成不同的微服务以便解耦:
我按照业务拆分了三个业务微服务crawler,user,driftbook 两个公共模块common,util 一个SpringCloud模块
三个微服务独立运行独立部署没问题,但我现在为了节省资源,代码可以分module去写,但打包的时候只想部署到一个服务上,就新创建了一个parent
本地启动parent可以访问到其他module的接口,打包部署到linux上,发现访问不到其他模块的代码。
问题排查
1.访问不到接口,代码没有更新:重新clean部署了好几遍还是不行,排除。
2.因为项目用了swagger本地启动后可以扫描到接口,linux上扫描不到其他module的接口,看看是不是包扫描的问题:
重试了好几次,还是不行。
3.进一步定位问题,现在已经确定是代码没有到linux上,再看看是不是maven打包的时候没有把其他module打包进去:
把这个jar包解压之后发现lib包中没有我pom中引入的那几个模块的jar包
4.现在可以确定问题是由于maven打包的时候没有把本地引入的依赖包给添加进来
问题解决
在查看jar包里面的lib包时发现包里面有公共包common和util包,那就看看pom是怎么把这两个包给加进去的
是的通过 dependencyManagement把这两个包给引入的
那么同样的我只需要把crawler,user,driftbook模块引入就好
重新打包后再去查看jar包中的lib包,就有这几个模块了,再部署到linux上就可以访问到了。
深度思考
那么这个dependencyManagement起到了什么作用?