springboot项目编译后无法扫描加载到子jar包中的注解解决方法

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包存在重复。

 

解决方法,在B项目的pom.xml文件中添加<classifier>exec</classifier>

这样B项目编译后target目录下会产生两个文件

B.jar  B-exec.jar

其中B-exec.jar和之前的结构一样

B.jar的目录结构是非springboot编译项目,只有B项目自身的文件

+META-INF

+com.B项目包名

 配置文件....

 

这样再对A项目打包后,A项目BOOT-INF/lib目录下只会加入B.jar,实测启动可以正常扫描到B项目中的注解

 

如果需要单独执行B项目,只需执行B-exec.jar即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章