boot项目引入大坑

接手的一个老项目,因为这个问题,兜兜转转花费了一晚上的时间。复盘一次,这个问题我不会遇到了!

事发场景:boot-b引入boot-a,boot-a中有服务WelcomeService

1.新建两个boot项目,boot-a中创建一个接口

image-20220620143935692

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

image-20220620144836836

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

image-20220620145124953

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

20220620145317956

编译结果:

image-20220620145406660

因为这个问题,百思不得其解。成功引入的表象,误导我 尝试了好多种方式,解决 最后把错误归结到我本地电脑环境问题,心态爆炸 休息一会后尝试重新解决

5.尝试打包boot-a 看看打包的目录 package

image-20220620150532011

打包后找到目录解压 我们的包变成了BOOT-INF 他确实打包打入了你boot-b需要的接口,但是你的maven是引入不到的,

image-20220620150628669

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

解压后新的包,是我们想要的目录

image-20220620152556517

尝试重新编译启动,如果报错的话 还是,尝试清理一下缓存,重新生成一下mvn目录

执行命令:mvn : -U idea:idea

成功编译启动

image-20220620153316105