OpenAPI Generator Maven插件无法生成API接口问题求助
解决openapi-generator未生成API接口的问题
你当前遇到的核心问题是选错了代码生成器类型——配置里的java生成器是用来生成HTTP客户端代码的,而非服务端的API接口(比如Spring MVC风格的Controller接口)。下面一步步帮你修正:
1. 调整Maven插件的生成器配置
把generatorName从java改成spring,这个生成器专门用于生成Spring Boot风格的服务端API接口及相关代码。同时补充一些关键配置项,确保生成你需要的内容:
修改后的插件配置片段:
<plugin> <groupId>org.openapitools</groupId> <artifactId>openapi-generator-maven-plugin</artifactId> <version>5.1.0</version> <executions> <execution> <id>generate-server-api</id> <goals> <goal>generate</goal> </goals> <phase>process-resources</phase> <configuration> <inputSpec>${project.basedir}/src/main/openapi/api.json</inputSpec> <!-- 替换为spring生成器,用于生成服务端API接口 --> <generatorName>spring</generatorName> <generateApiDocumentation>false</generateApiDocumentation> <generateApiTests>false</generateApiTests> <generateSupportingFiles>true</generateSupportingFiles> <!-- 显式开启API接口生成(默认开启,显式指定更稳妥) --> <generateApi>true</generateApi> <configOptions> <sourceFolder>src/main/java</sourceFolder> <dateLibrary>java8</dateLibrary> <!-- 指定自定义包名,避免默认包结构混乱 --> <basePackage>com.example.demo.api</basePackage> <apiPackage>com.example.demo.api</apiPackage> <modelPackage>com.example.demo.model</modelPackage> <!-- 仅生成API接口,不生成默认实现类(按需调整) --> <interfaceOnly>true</interfaceOnly> <!-- 适配你的Spring Boot 2.x版本 --> <useSpringBoot3>false</useSpringBoot3> </configOptions> </configuration> </execution> </executions> </plugin>
2. 优化OpenAPI规范文件(可选但推荐)
你的api.json符合Swagger 2.0规范,但补充细节能让生成的代码更完整:
{ "swagger": "2.0", "info": { "title": "Test API", "version": "1.0.0" // 补充版本号,符合规范要求 }, "host": "localhost:8080", "basePath": "/", "tags": [ { "name": "test-controller", "description": "Test Operations" } ], "paths": { "/test": { "get": { "tags": [ "test-controller" ], "operationId": "test", "responses": { "200": { "description": "OK", "schema": { "type": "string" // 示例返回类型,让生成的接口方法更明确 } } } } } } }
3. 执行代码生成命令
运行Maven命令触发生成:
mvn clean process-resources
生成完成后,你会在com.example.demo.api包下看到TestControllerApi接口,这就是你需要的API接口类,里面包含了对应/test GET请求的test()方法。
额外小提示
- 你当前在
<dependencies>里添加了openapi-generator-maven-plugin,其实不需要——插件只需在<build><plugins>中配置即可,可移除依赖里的该条目。 - 如果需要生成接口的基础实现类,把
interfaceOnly设为false即可。
内容的提问来源于stack exchange,提问作者shams
相关产品推荐
相关产品推荐

