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

多模块项目使用spring-boot-maven-plugin构建启动jar提示找不到主类如何解决

问题根源

你当前的配置错误核心是:将仅需启动模块使用的spring-boot-maven-plugin重打包、主类配置全局放在了父POM的pluginManagement中,普通依赖模块(Model/Controller/View)如果继承到该配置,打包时会找不到不存在的主类报错。

可行解决步骤

1. 调整父POM配置

父POM的pluginManagement中仅保留插件的统一版本声明,移除全局的重打包执行配置、主类配置,修改后对应部分如下:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.4.0</version>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

2. 仅在Execute启动模块配置插件

Model/Controller/View三个普通依赖模块完全不要添加spring-boot-maven-plugin的引用,仅在存放主启动类的Execute模块的POM中添加插件及对应配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <configuration>
                        <!-- 确认此处全限定名和Execute模块中主类实际路径完全一致 -->
                        <mainClass>ru.kwork.Main</mainClass>
                        <classifier>spring-boot</classifier>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

注意:请确认主类ru.kwork.Main确实存放在Execute模块的src/main/java/ru/kwork路径下,且类上标注了@SpringBootApplication注解

3. 执行打包

在父项目根目录执行命令mvn clean package即可,打包完成后可执行jar包会生成在Execute模块的target目录下,带spring-boot后缀的就是可运行的fat jar。

配置逻辑说明

  • pluginManagement的作用是统一管控子模块的插件版本,不会直接生效,仅在子模块声明引用该插件时才会继承配置,因此仅单个模块需要的特殊配置不要放在父POM中,避免污染其他模块。
  • 普通业务模块只需打成普通jar包供其他模块依赖即可,不需要执行Spring Boot的repackage操作,repackage会将普通jar转换为带启动引导类的可执行jar,反而会导致其他模块依赖时无法正常识别类。
  • 仅入口模块需要配置repackage并指定自身的主类路径,打包时仅会对该模块做可执行jar转换,其他模块都是普通依赖jar,不会触发主类查找逻辑,因此不会报错。

内容的提问来源于stack exchange,提问作者Daniele D'Alia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:09:03