现在正在做的一个项目采用的是微服务,主框架是spring cloud
,配置中心用的是携程的Apollo
。
项目下有多个服务,在测试服务器上启动用户服务的时候发现在eureka
中心另一个服务被启动了,尝试了多次,问题依旧。然而在本机的开发环境 idea
下启动此服务却没问题,然后排查服务模块中与 Apollo
相关的配置,依然没发现问题。
再去服务器上看启动日志,发现每次启动的时候读取 META-INF
目录下的 app.properties
文件读取出来的 app_id
为另一个模块的 id
,好吧,解压缩 jar 包,看app.properties
里的内容,哦豁没问题是 user-service
,这下就懵逼了。
好吧,再回到开发机器,直接以命令 java -jar user-service.jar
启动服务,查看启动日志,我勒个去,跟服务器上的问题一样,现在基本上就能确定问题所在了,怎么办呢,去查看模块的pom.xml
文件,跟历史版本一对比,发现问题了,一位同事把另一个服务模块给依赖进来了,而且scope
是 compile
的,导致在 idea
里运行没问题,但是打成 jar
包以后就会出问题了,不过这个锅个人认为 apollo
也要背一点,为毛引入其他模块以后不是读当前模块的app.properties
,而是读依赖 jar
包里的app.properties
,这不是坑人么。