问题现象
存在一个 common 包,这个包是公共包,很多项目或服务都会引用这个包。然而今天发现,明明 maven 中有这个包的依赖,而且 IDEA 中也有这个包,但是在用这个包中的类文件时,就是飘红,编译不过。而且使用 IDEA 中的 "import class"点了也没反应。
问题排查
由于造成这样的原因可能很多,这里只说出本人的问题以及解决方式,读者可以自己判断是否也是这种情况。在这之前,我假定你已经确保包确实存在,而且进行过 maven 的基本排查,也尝试过 IDEA “Invalidate caches / Restart” 了。
经过对比其他的 jar 包发现,我打出来的 common 包中多了一层 “BOOT-INF”,而 common 包中的代码都在 “BOOT-INF/classes” 下。
解决方式
在 common 包的 pom.xml 文件中进行如下配置,需要注意的是,你只需要关注 configuration
标签里的内容即可。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
在引用的项目中,“reimport” 一下,原来飘红的类已经可以使用了。