我正在使用SpringBoot 1.4.2。我希望能够从命令行启动我的SpringBoot应用程序,指定在我启动应用程序时也应该扫描组件的其他外部jar。我无法使用spring-boot-maven-plugin
,因为当我想启动它时,我不会拥有弹簧启动应用程序的pom。
到目前为止,我已尝试过以下操作,其中my-jar.jar
是Spring启动应用程序,external-jar.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
无法启动,即使@Autowired
中的类确实满足它们,external-jar.jar
中的my-jar.jar
条件也不满意。我试过在类路径上颠倒jar的顺序,这并没有解决问题。
java -Dloader.path="external-jar.jar" -jar my-jar.jar
这会启动,但不会扫描组件external-jar.jar
我的SpringApplication类顶部的组件扫描路径包含my-jar.jar
和external-jar.jar
的包路径,我已经验证了在我的pom中直接引用external-jar.jar
时它是组件扫描。
答案 0 :(得分:4)
您正在使用错误的启动器。 loader.path
提供对loader.main
和PropertiesLauncher
的支持,但您使用的是JarLauncher
。