项目结构为:
项目结构
父模块为:localdeployment-server
子模块为:main
extend也是子模块,并且依赖main模块
今天打包时候发现extend模块报错,找不到依赖的main模块中的类,查了诸多文章后了解到使用spring-boot-maven-plugin进行打包时会自动生成两种jar:
普通jar。
可以直接使用java -jar *运行的可执行jar包。
这两种jar默认是同名的,并且普通的jar会被可执行jar覆盖掉。可执行jar包不同于普通的jar,不可以被其他模块所依赖。所以导致extend模块找不到类。
详情可以参考:
定位到问题后解决就很容易了,只要不让生成的可执行jar将普通jar覆盖掉就可以了,我门将其改个名称,将pom文件中打包插件配置改为:
org.springframework.boot
spring-boot-maven-plugin
exec
打包成功:
[INFO] Reactor Summary:
[INFO]
[INFO] localdeployment-server 1.0-SNAPSHOT ................ SUCCESS [ 0.009 s]
[INFO] main 0.0.1-SNAPSHOT ................................ SUCCESS [ 13.142 s]
[INFO] extend 1.0-SNAPSHOT ................................ SUCCESS [ 0.770 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 14.792 s
[INFO] Finished at: 2020-07-29T10:03:27+08:00
[INFO] ------------------------------------------------------------------------
这样打包后就有两个jar了:
打包后的jar包
main-0.0.1-SNAPSHOT-exec.jar 就是我们的可执行jar。