boot项目引入大坑
接手的一个老项目,因为这个问题,兜兜转转花费了一晚上的时间。复盘一次,这个问题我不会遇到了!
事发场景:boot-b引入boot-a,boot-a中有服务WelcomeService
1.新建两个boot项目,boot-a中创建一个接口

2.boot-b引入项目boot-a的gav

3.boot-b写个接口实现类实现boot-a中写好的接口

4.看起来一切正常,boot-b成功引入了boot-a中的接口,但是你尝试启动一下项目项目是启动不了的,编译一下尝试comlile

编译结果:

因为这个问题,百思不得其解。成功引入的表象,误导我 尝试了好多种方式,解决 最后把错误归结到我本地电脑环境问题,心态爆炸 休息一会后尝试重新解决
5.尝试打包boot-a 看看打包的目录 package
打包后找到目录解压 我们的包变成了BOOT-INF 他确实打包打入了你boot-b需要的接口,但是你的maven是引入不到的,

6.原因分析
如下,就是在boot-a中springboot的maven插件,用这个插件打包的Jar包可以直接运行,但是不可依赖!(创建boot项目默认会加)
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
7.解决方案
在boot-aconfiguration下设置skip为true
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
尝试重新打包boot-a
mvn install
解压后新的包,是我们想要的目录

尝试重新编译启动,如果报错的话 还是,尝试清理一下缓存,重新生成一下mvn目录
执行命令:mvn : -U idea:idea
成功编译启动
