最近項目上碰到一個問題,一個spring boot項目,原先有三個module,其中module A不依賴於其它模塊,module B依賴module A,module C依賴module B和module A,其中module C爲啓動類。現在因業務需要,加入第四個模塊module D,module D依賴於前面三個module A、module B和module C。但是用maven打包的時候,前面三個module都沒有問題,第四個module報錯,報的錯誤是找不到類,這些找不到的類都是module C下的。
網上搜索後,看到有說法是spring-boot-maven-plugin打出來的jar包不可以被依賴,然後把module C下的pom.xml中對應的plugin註釋掉,可以正常編譯。然後繼續找spring-boot-maven-plugin的資料,原來使用spring-boot-maven-plugin插件打包的時候,Maven首先在package階段打包生成*.jar文件;然後執行spring-boot:repackage重新打包,將之前的*.jar包重命名爲*.jar.original,然後生成springboot的可執行jar包文件*.jar,所以我們真正需要依賴的是*.jar.original包。
如果需要生成可以執行的jar包,除了註釋掉spring-boot-maven-plugin插件,也可以在打包的時候跳過repackage
mvn clean package -Dspring-boot.repackage.skip=true
參考博客: