项目场景:
这个问题其实遇到很多次,之前都是mavan下重新install就好了,但是这个install的时候就报某个实体类,不存在,或者导入不进去。问题描述:
这次的问题是我在微服务下导入用户模块的实体类,但是打包一直提示符号不存在。而有的时候却可以运行。而打包却不存在,后面再运行下就运行失败了。而项目里也是可以直接点进去。原有的bug截图不在了,从网上找了类似的截图来讲解。类似于如下那两张。
原因分析:
- 因为项目有的时候可以运行,而且可以直接点进去,发现是可以存在的,而打包提示符号不存在,那么可以证明问题基本是在maven上。但是我重新install却发现不是缓存之类的问题,那么可以再想想maven install到底是什么部分?所以我想到是不是因为我使用微服务的原因。
- 既然确定了是maven且微服务的原因后,那么问题排查点就很简单了,很容易想到未找到服务的实体类是模块间的依赖,说明在模块打包的时候没有把模块打包进来。
解决方案:
进行原因分析后,解决方案就很简单了,在需要被打包的实体类所在的模块pom文件下加入以下配置:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>execute</classifier>
</configuration>
<executions>
<execution>
<phase>none</phase>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
我是依赖一个ucenter的用户模块,则只需要再ucenter的用户模块内加入以上配置就行。