如何使用openapi-generator-maven-plugin仅修改单个字段的类型?
解决方案
有两种可行的实现方式,无需手动修改生成后的代码:
方式1:使用fieldTypeMappings配置(推荐,无需修改原Schema)
OpenAPI Generator 4.3及以上版本支持针对单个模型的单个字段指定映射类型,你只需要在openapi-generator-maven-plugin的配置中添加fieldTypeMappings规则即可:
- 首先确认包含
date1字段的模型类名,比如你的返回模型类名为CommonResponse,则插件配置如下:
<plugin> <groupId>org.openapitools</groupId> <artifactId>openapi-generator-maven-plugin</artifactId> <!-- 确保版本 >=4.3.0 --> <version>6.6.0</version> <executions> <execution> <goals> <goal>generate</goal> </goals> <configuration> <!-- 保留你原来的其他配置:inputSpec、outputDirectory、generatorName等 --> <fieldTypeMappings> <!-- 格式:<模型类名>.<字段名>=<目标类型> --> <fieldTypeMapping>CommonResponse.date1=LocalDateTime</fieldTypeMapping> </fieldTypeMappings> <importMappings> <!-- 保留原有其他import映射,新增下面这行即可 --> <importMapping>java.time.LocalDateTime=java.time.LocalDateTime</importMapping> </importMappings> <!-- 不要添加全局的OffsetDateTime到LocalDateTime的typeMapping --> </configuration> </execution> </executions> </plugin>
该配置只会对指定模型的date1字段生效,其他date-time类型的字段(包括date2)仍会默认生成OffsetDateTime类型,完全符合预期。
方式2:给字段加扩展属性(允许修改原Schema补充扩展时使用)
如果允许给原Schema添加x-开头的非侵入式扩展属性(这类扩展不会影响原Schema的语义和接口校验逻辑,大多数场景下都允许),直接在date1的字段定义中添加x-java-type指定目标类型即可:
"date1": { "type": "string", "description": "Date 1", "format": "date-time", "x-java-type": "java.time.LocalDateTime" }
不需要修改插件的全局类型映射配置,生成时会自动将date1的类型设置为LocalDateTime。
内容的提问来源于stack exchange,提问作者bravo1
相关产品推荐
相关产品推荐

