【发布时间】:2017-04-30 02:56:48
【问题描述】:
我正在使用 SpringBoot 1.4.2。我希望能够从命令行启动我的 SpringBoot 应用程序,指定在我启动应用程序时也应该进行组件扫描的其他外部 jars。我不能使用spring-boot-maven-plugin,因为当我想启动它时,我没有spring boot 应用程序的pom。
到目前为止,我已经尝试了以下方法,其中 my-jar.jar 是 spring boot 应用程序,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
这无法启动,说external-jar.jar 中的@Autowired 条件不满足,即使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 时,它是组件扫描的。
【问题讨论】:
标签: spring spring-boot