You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行时能否指定spring-boot-maven-plugin的启动主类?

使用spring-boot-maven-plugin打包多主类非Spring应用的运行时指定方法

可行,Spring Boot支持通过系统属性在运行时指定要启动的主类,不过对应的属性不是你设想的startClass,而是spring.main.main-class。

具体操作步骤:

  1. 调整打包配置
    在pom.xml的spring-boot-maven-plugin配置中,不要固定指定<mainClass>,让打包后的Jar不绑定单一主类,示例配置如下:

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>你的Spring Boot版本号</version>
        <executions>
            <execution>
                <goals>
                    <goal>repackage</goal>
                </goals>
            </execution>
        </executions>
        <!-- 无需配置固定的mainClass -->
    </plugin>
    
  2. 运行时指定主类
    使用以下命令启动Jar,替换对应的主类路径和Jar文件名即可:

    java -Dspring.main.main-class=com.yourpackage.TargetMainClass -jar your-built-jar.jar
    

额外优化建议

如果你的非Spring应用不需要Spring上下文相关功能,可以添加spring.main.web-application-type=NONE参数,避免Spring初始化不必要的Web环境,提升启动效率:

java -Dspring.main.main-class=com.yourpackage.TargetMainClass -Dspring.main.web-application-type=NONE -jar your-built-jar.jar

补充说明

你之前用java -cp <jarfile> <mainclass>无法生效,是因为spring-boot-maven-plugin打包出的是可执行Jar,其内部结构和普通Jar不同,实际启动主类是Spring Boot的Launcher,必须通过这个Launcher来加载依赖和指定的业务主类,而spring.main.main-class就是用来告诉Launcher要启动哪个类的参数。

内容的提问来源于stack exchange,提问作者tbeernot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 13:04:57