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

Maven多模块项目执行spring-boot:build-image报错找不到主类如何解决?

问题根因

你在项目根目录直接执行mvn spring-boot:build-image时,Maven会默认对所有子模块触发该构建目标。core模块是公共依赖包,没有Spring Boot启动主类,也不需要构建为可执行镜像,因此触发了「找不到主类」的报错。
mvn clean package能正常执行的原因是:默认配置下core模块只会打包为普通jar包,仅executable模块会执行Spring Boot的repackage逻辑生成可执行jar,不会涉及无主类的校验逻辑。

解决方案

方案1:执行命令时指定模块(无需修改配置,推荐临时使用)

在构建命令中通过-pl参数指定仅对executable模块执行build-image目标:

mvn spring-boot:build-image -pl executable

方案2:全局配置跳过非启动模块的插件执行(适合固定项目配置)

  1. 在根pom.xml中添加pluginManagement配置,默认跳过所有子模块的spring-boot-maven-plugin执行:
<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>
  1. 修改executable模块的pom.xml中插件配置,关闭跳过并绑定构建目标:
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <skip>false</skip>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
                <goal>build-image</goal>
            </goals>
        </execution>
    </executions>
</plugin>

配置完成后,直接在根目录执行mvn spring-boot:build-image即可自动跳过core模块,仅对executable模块构建镜像。

方案3:切换到executable模块目录执行命令

先在根目录执行mvn clean install完成所有模块的安装,再进入executable模块目录执行mvn spring-boot:build-image即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:06:03