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

STS Boot Dashboard启动Spring Boot多模块项目失败的问题求助

解决STS Boot Dashboard启动找不到Mapstruct生成Bean的问题

问题核心

多模块Maven项目中,iaas-cockpit-backend依赖iaas-cockpit-core-lib,使用STS 4.23.1通过Boot Dashboard启动时找不到Mapstruct生成的UserMapper Bean,但mvn spring-boot:run可正常启动;执行Maven >> Update Project...后,target/classes中的Mapstruct实现类消失,即使开启JDT APT配置也无效。

解决方案

1. 修正core-lib模块的Mapstruct Maven配置

在iaas-cockpit-core-lib的pom.xml中,必须正确配置注解处理器路径,确保Maven编译阶段能生成Mapstruct实现类:

<dependencies>
    <!-- Mapstruct核心依赖 -->
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct</artifactId>
        <version>1.5.5.Final</version> <!-- 替换为你的实际Mapstruct版本 -->
    </dependency>
    <!-- 若使用Lombok,添加以下依赖 -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.30</version> <!-- 替换为你的实际Lombok版本 -->
        <scope>provided</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.11.0</version>
            <configuration>
                <source>17</source> <!-- 匹配你的项目JDK版本 -->
                <target>17</target>
                <annotationProcessorPaths>
                    <!-- Mapstruct注解处理器 -->
                    <path>
                        <groupId>org.mapstruct</groupId>
                        <artifactId>mapstruct-processor</artifactId>
                        <version>1.5.5.Final</version> <!-- 与核心依赖版本保持一致 -->
                    </path>
                    <!-- Lombok注解处理器(若使用Lombok) -->
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>1.18.30</version>
                    </path>
                    <!-- Lombok与Mapstruct绑定插件(可选但推荐) -->
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok-mapstruct-binding</artifactId>
                        <version>0.2.0</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>

2. 调整STS的注解处理配置

STS默认的JDT APT无法正确识别Maven配置的注解处理器,需切换为使用Maven原生注解处理:

  • 打开Window > Preferences > Maven > Annotation Processing
  • 勾选Enable annotation processing in Maven projects
  • 取消勾选Use JDT APT
  • 点击Apply and Close

3. 将生成的源码目录加入项目类路径

确保STS能识别Mapstruct生成的代码目录:

  • 右键iaas-cockpit-core-lib模块 > Properties > Java Build Path > Source
  • 点击Add Folder,找到target/generated-sources/annotations目录并勾选
  • 确认该目录的Output folder设置为target/classes(默认已配置,若未设置需手动调整)

4. 强制重新构建项目

  • 先在iaas-cockpit-core-lib模块根目录执行命令:mvn clean compile
  • 在STS中右键根项目 > Run As > Maven Clean,再执行Run As > Maven Compile
  • 最后右键根项目 > Maven > Update Project...,勾选Force Update of Snapshots/Releases,点击确定

5. 检查Boot Dashboard启动配置

  • 打开Boot Dashboard,找到iaas-cockpit-backend应用,右键 > Edit Configuration
  • 确认Classpath选项卡中使用的是Maven依赖(而非自定义类路径)
  • 确保Working directory设置为iaas-cockpit-backend模块的根目录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 07:38:10