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即可

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