“所有你乐于挥霍的时间都不能算作是浪费。”——约翰·列侬
这个坑蛮棘手的
事发场景:main-boot
引入common-boot
模块,common-boot
模块是一个spring-boot
模块
关键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;
public interface IService { }
|
然后拿到main-boot
中引用
main-boot
的pom.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;
public class ServiceImpl implements IService { }
|
然后我们首先mvn install
一下common-boot
我们尝试在main-boot
进行mvn compile
却发现编译报错
说是找不到符号
此时我们其实可以根据common-boot
的jar
拆包查看
发现其目录结构不太对劲
我们的包变成了BOOT-INF
这时候我们可以在common-boot
的pom.xml
配置一下spring-boot-maven-plugin
在configuration
下设置skip
为true
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
打包、解包,发现正常了
然后我们在main-boot
再次进行编译,发现成功
注意如果还是不成功,我们可以清除一下idea
缓存,或者执行这里的命令进行刷新依赖、重新生成idea
项目模块配置文件