openapi-generator-maven-plugin的importMappings配置未生效求助
OpenAPI Generator Maven插件importMappings失效解决办法
在Spring Boot项目里用openapi-generator-maven-plugin生成API客户端时,若想导入自定义DTO,即便按Gradle插件的配置方式在YAML里定义空schema、在pom.xml中配置importMappings,也可能遇到Maven插件不识别该配置的情况——生成的代码里自定义DTO会被替换成Object类型,而相同逻辑在Gradle插件中能正常运行,这个问题从5.3.1版本起就存在。
解决步骤
调整importMappings的配置位置
Maven插件对独立的importMappings节点存在解析问题,需要把映射配置移到configOptions节点下,用逗号分隔多个映射规则:<plugin> <groupId>org.openapitools</groupId> <artifactId>openapi-generator-maven-plugin</artifactId> <version>6.4.0</version> <executions> <execution> <phase>generate-sources</phase> <goals> <goal>generate</goal> </goals> <configuration> <inputSpec>${project.basedir}/src/main/resources/openapi/some-api.yaml</inputSpec> <generatorName>spring</generatorName> <output>${project.build.directory}/generated-sources/openapi</output> <generateApiTests>false</generateApiTests> <generateModelTests>false</generateModelTests> <generateModelDocumentation>false</generateModelDocumentation> <configOptions> <title>Some project</title> <library>spring-boot</library> <useTags>true</useTags> <dateLibrary>java8</dateLibrary> <basePackage>${default.package}</basePackage> <apiPackage>${default.package}.api</apiPackage> <modelPackage>${default.package}.model</modelPackage> <performBeanValidation>true</performBeanValidation> <interfaceOnly>true</interfaceOnly> <!-- 将映射规则移至此处,多规则用逗号分隔 --> <importMappings>MyDto1=com.some.project.metric.MyDto1,MyDto2=com.some.project.metric.MyDto2</importMappings> </configOptions> </configuration> </execution> </executions> </plugin>修正OpenAPI YAML中的schema定义
确保自定义DTO的空schema明确指定type: object,避免生成器将其识别为任意类型:components: schemas: MyDto1: type: object MyDto2: type: object
原因说明
Gradle插件同时支持独立节点和configOptions内的importMappings配置,但Maven插件仅能正确解析configOptions下的映射规则,独立节点的配置无法被生成器正确读取,这是两者的核心差异点。
内容的提问来源于stack exchange,提问作者Barmaglot
相关产品推荐
相关产品推荐

