1.现象:如题所示
2. 背景:工程结构
使用springboot构建的聚合模块: A为父工程,用于版本控制,
B为工具类模块
C为核心模块
B 和 C 都是A的子模块,同时C又依赖于B
那么在接下来使用Maven打包时就会提示B模块中的某些类或者package
无法找到
3.解决办法:
3.1 原有配置
我们来看看springboot初始化的打包插件
<project>
....
<dependencies>
....
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
....
</project>
3.2 修改后的配置
<project>
....
<dependencies>
....
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
</plugins>
</build>
....
</project>
3.3 主要的差别
4.原因解析:
spring-boot工程打包编译时,会生成两种jar包,一种是普通的jar,另一种是可执行jar。默认情况下,这两种jar的名称相同,在不做配置的情况下,普通的jar先生成,可执行jar后生成,所以可执行jar会覆盖普通的jar。