2016-12-14 110 views
0

我正在使用SpringBoot 1.4.2。我希望能夠從命令行啓動我的SpringBoot應用程序,並指定在啓動應用程序時還應對其進行組件掃描的其他外部jar。我不能使用spring-boot-maven-plugin,因爲當我想啓動它時,我不會有彈簧引導應用程序的pom。在運行時動態添加罐子到SpringBoot

我曾嘗試以下,到目前爲止,其中my-jar.jar是彈簧啓動應用程序和external-jar.jar是外部罐子我想包括在命令行上:

java -cp my-jar.jar -Dloader.path=external-jar.jar -Dloader.main=com.my.Application org.springframework.boot.loader.JarLauncher 

這將啓動,但不組件掃描external-jar.jar

java -cp external-jar.jar:my-jar.jar -Dloader.main=com.my.Application org.springframework.boot.loader.JarLauncher 

這啓動失敗,稱external-jar.jar@Autowired條件不滿意,即使在my-jar.jar類並滿足他們。我試過顛倒了類路徑上的jar的順序,但這並沒有解決問題。

java -Dloader.path="external-jar.jar" -jar my-jar.jar 

這將啓動,但不組件掃描external-jar.jar

我SpringApplication類的頂部我的組件掃描路徑有兩種my-jar.jarexternal-jar.jar一個包路徑和內直接引用external-jar.jar時,我已經驗證了我的它是組件掃描。

回答

1

您使用的是錯誤的啓動器。支持loader.pathloader.mainPropertiesLauncher提供,但您使用的是JarLauncher

+0

我真的不能夠感謝你! 'java -cp my-jar.jar -Dloader.path = external-jar.jar -Dloader.main = com.my.Application org.springframework.boot.loader.PropertiesLauncher' works – user783836