“所有你乐于挥霍的时间都不能算作是浪费。”——约翰·列侬

这个坑蛮棘手的

事发场景:main-boot引入common-boot模块,common-boot模块是一个spring-boot模块

image-20220515110336277

关键GAV构成如下:

common-boot

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.7</version>
<relativePath/>
</parent>

<groupId>com.ruben</groupId>
<artifactId>common-boot</artifactId>
<version>0.0.1-SNAPSHOT</version>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

其中common-boot我们编写一个IService

1
2
3
4
5
6
7
8
9
10
package com.ruben.service;

/**
* 接口
*
* @author VampireAchao
* @since 2022/5/15 10:23
*/
public interface IService {
}

然后拿到main-boot中引用

main-bootpom.xml

1
2
3
4
5
6
7
<dependencies>
<dependency>
<groupId>com.ruben</groupId>
<artifactId>common-boot</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>

写个实现类继承

1
2
3
4
5
6
7
8
9
10
11
12
package com.ruben.service.impl;

import com.ruben.service.IService;

/**
* 服务实现类
*
* @author <achao1441470436@gmail.com>
* @since 2022/5/15 10:24
*/
public class ServiceImpl implements IService {
}

image-20220515110548896

然后我们首先mvn install一下common-boot

我们尝试在main-boot进行mvn compile却发现编译报错

image-20220515111036418

说是找不到符号

此时我们其实可以根据common-bootjar拆包查看

发现其目录结构不太对劲

image-20220515111209505

我们的包变成了BOOT-INF

这时候我们可以在common-bootpom.xml配置一下spring-boot-maven-plugin

configuration下设置skiptrue

1
2
3
4
5
6
7
8
9
10
11
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>

或者干脆直接去掉这个plugin配置

再次mvn install打包、解包,发现正常了

image-20220515111751776

然后我们在main-boot再次进行编译,发现成功

image-20220515111851453

注意如果还是不成功,我们可以清除一下idea缓存,或者执行这里的命令进行刷新依赖、重新生成idea项目模块配置文件