SpringBoot多Module情况下,本地可以运行,Linux环境上没有其他Module代码的情况

问题描述

  用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起到了什么作用?

  

 

posted @ 2021-04-21 09:43  左手程序,右手诗  阅读(251)  评论(0编辑  收藏  举报