我正在使用SpringBoot 1.4.2。我希望能够从命令行启动SpringBoot应用程序,并指定其他外部jar,在我启动应用程序时也应对其进行组件扫描。我无法使用,spring- boot-maven-plugin因为当我要启动它时,我将没有spring boot应用程序的pom。
spring- boot-maven-plugin
到目前为止,我已经尝试了以下操作,my-jar.jarSpring Boot应用程序在哪里,external- jar.jar我想在命令行中包含的外部jar是:
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
external-jar.jar
java -cp external-jar.jar:my-jar.jar -Dloader.main=com.my.Application org.springframework.boot.loader.JarLauncher
这无法启动,表示即使满足@Autowiredin的条件external-jar.jar也不能满足in的条件my- jar.jar。我试过颠倒类路径上jar的顺序,这不能解决问题。
@Autowired
my- jar.jar
java -Dloader.path="external-jar.jar" -jar my-jar.jar
我在SpringApplication类顶部的组件扫描路径有两个包路径my-jar.jar,external- jar.jar并且我已经验证了external-jar.jar直接在pom中引用时它是组件扫描的。
您使用了错误的启动器。支持loader.path和loader.main被提供PropertiesLauncher,但你使用JarLauncher。
loader.path
loader.main
PropertiesLauncher
JarLauncher