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

Spring多模块项目中无法导入并实现OpenAPI生成接口的求助

问题解决步骤

一、统一Java编译版本

父项目指定了Java 17,但customy-api和customy-service模块仍使用Java 1.7,跨版本编译会导致类无法互相识别。修改两个模块的<properties>配置:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
</properties>

二、让Maven识别OpenAPI生成的代码

OpenAPI生成的代码默认存放在${project.build.directory}/generated-sources/,Maven不会自动将该目录纳入编译范围,需在customy-api模块的<build><plugins>中添加插件:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>3.3.0</version>
    <executions>
        <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>${project.build.directory}/generated-sources/src/main/java</source>
                </sources>
            </configuration>
        </execution>
    </executions>
</plugin>

三、替换javax依赖为Jakarta兼容版本

Spring Boot 3基于Jakarta EE,customy-api中的javax依赖会与Spring Boot 3冲突,做如下替换:

  1. 移除javax.validation:validation-api,改用Spring Boot提供的starter:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
    <scope>provided</scope>
</dependency>
  1. 移除javax.annotation:javax.annotation-api(Spring Boot 3已内置相关API)
  2. 移除javax.servlet:servlet-api,替换为Jakarta版本:
<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>6.0.0</version>
    <scope>provided</scope>
</dependency>
  1. 移除io.springfox:springfox-swagger2(Spring Boot 3推荐使用springdoc-openapi,仅生成接口可直接移除)

四、升级OpenAPI Generator插件版本

旧版本(5.1.0)对Spring Boot 3支持不足,升级至稳定版并适配Spring Boot 3配置:

<plugin>
    <groupId>org.openapitools</groupId>
    <artifactId>openapi-generator-maven-plugin</artifactId>
    <version>6.6.0</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <inputSpec>${project.basedir}/src/main/resources/api/customy.yaml</inputSpec>
                <generatorName>spring</generatorName>
                <output>${project.build.directory}/generated-sources/</output>
                <apiPackage>sio.myproject.api</apiPackage>
                <modelPackage>sio.myproject.models</modelPackage>
                <configOptions>
                    <interfaceOnly>true</interfaceOnly>
                    <springBootVersion>3.1.2</springBootVersion>
                    <jakartaEe>true</jakartaEe>
                    <useSpringBoot3>true</useSpringBoot3>
                </configOptions>
            </configuration>
        </execution>
    </executions>
</plugin>

五、重新构建项目

执行Maven命令清理并重新编译所有模块:

mvn clean install -DskipTests

内容的提问来源于stack exchange,提问作者rachid si oumghar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:13:15