在 springboot 生成的 jar 包中运行指定 main 函数

199 阅读1分钟

1. springboot jar 包默认指定 Main Class

springboot 打包出来的 jar 包,默认指定了 Main Class 为 org.springframework.boot.loader.launch.JarLauncher。spring 启动时会再行加载我们写的主类。解压 jar 包,查看 META-INF/MANIFEST.MF 可以验证

image.png

2. PropertiesLauncher

查阅文档,springboot 还支持其他的 Launcher,其中的 org.springframework.boot.loader.launch.PropertiesLauncher 支持其他配置参数,可以指定运行主类

image.png

image.png

PropertiesLauncher 还支持其他参数,以及不同的设置方式(通过 java -D、环境变量等),有需要可自行查阅。docs.spring.io/spring-boot…

3. 运行和测试

可以通过如下命令来运行指定主类

# 通过 PropertiesLauncher 依然可以启动原程序
java -cp build/libs/xx.jar \
    org.springframework.boot.loader.launch.PropertiesLauncher

# 通过 PropertiesLauncher 运行指定主类
java -cp build/libs/xx.jar \
    -Dloader.main=com.your.another.Main \
    org.springframework.boot.loader.launch.PropertiesLauncher

# 追加参数
java -cp build/libs/xx.jar \
    -Dloader.main=com.your.another.Main \
    -Dloader.args="test1 test2 test3"
    org.springframework.boot.loader.launch.PropertiesLauncher
    
# 要注意参数设置要在主类之前设置

测试结果

image.png