springboot+maven+多模块开发报错总结
1.找不到
main
在我的父工程中build是这样的
<build>
<plugins>
<plugin>
<!-- springboot打包方式 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- <skip>true</skip> 默认跳过单元测试-->
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
解决办法:只需要在父工程的build指定一下你的启动类在哪就行
<configuration>
<mainClass>com.wst.ApiApplication</mainClass>
</configuration>
2.找不到
xxx.xxx.beans
包
A项目依赖B项目,B项目中存在@service等注解,在本地eclipse中运行A项目时可以正常扫描B项目的注解创建对象。
但经过打包后,B项目和A项目的目录结构变成
+BOOT-INF
+classes
+lib
+META-INF
+org.springframework.boot.loader
B项目本身又作为A项目BOOT-INF/lib下的jar包,A项目使用java -jar从入口启动类启动后无法扫描到B项目的注解,
且B项目中的lib也与A项目中的lib下jar包存在重复。
解决办法:
在父项目的pom中加入:
<configuration>
<classifier>exec</classifier>
</configuration>
spring-boot工程打包编译时,会生成两种jar包,一种是普通的jar,另一种是可执行jar。默认情况下,这两种jar的名称相同,在不做配置的情况下,普通的jar先生成,可执行jar后生成,所以可执行jar会覆盖普通的jar。