OpenAPI Generator Maven插件是否支持自定义模板及API模型二次处理?
关于openapi-generator-maven-plugin自定义配置与模型重处理的问题
一、是否支持原生生成器式的自定义配置
完全支持,你提到的指定模板目录、额外属性、自定义文件模板这些能力,maven插件都能实现,对应配置如下:
1. 指定模板目录
在插件配置里用<templateDirectory>标签指定自定义模板路径:
<plugin> <groupId>org.openapitools</groupId> <artifactId>openapi-generator-maven-plugin</artifactId> <version>最新版本号</version> <executions> <execution> <goals> <goal>generate</goal> </goals> <configuration> <!-- 指定自定义模板目录 --> <templateDirectory>${project.basedir}/my_custom_templates</templateDirectory> <!-- 其他基础配置 --> <inputSpec>${project.basedir}/src/main/resources/openapi.yaml</inputSpec> <generatorName>kotlin</generatorName> </configuration> </execution> </executions> </plugin>
2. 额外属性配置
用<additionalProperties>或<configOptions>来设置,对应你示例里的additionalProperties:
<configuration> <!-- 额外属性写法1 --> <additionalProperties> <additionalProperty>artifactId=kotlin-petstore-client</additionalProperty> <additionalProperty>serializableModel=true</additionalProperty> <additionalProperty>dateLibrary=java8</additionalProperty> </additionalProperties> <!-- 额外属性写法2(更推荐,结构清晰) --> <configOptions> <artifactId>kotlin-petstore-client</artifactId> <serializableModel>true</serializableModel> <dateLibrary>java8</dateLibrary> </configOptions> </configuration>
3. 自定义文件模板映射
通过<files>标签配置,对应你示例里的files节点:
<configuration> <files> <file> <template>AUTHORS.md</template> </file> <file> <template>api_interfaces.mustache</template> <templateType>API</templateType> <destinationFilename>Interface.kt</destinationFilename> </file> <file> <template>api.mustache</template> <templateType>API</templateType> <destinationFilename>Impl.kt</destinationFilename> </file> <file> <template>other/check.mustache</template> <folder>scripts</folder> <destinationFilename>check.sh</destinationFilename> <templateType>SupportingFiles</templateType> </file> </files> </configuration>
二、用另一Mustache模板重新处理API模型
有两种常用方式实现:
1. 覆盖默认模型模板
找到对应生成器的默认模型模板(比如kotlin生成器的模型模板通常是model.mustache),把你的自定义模板放到之前指定的<templateDirectory>下的对应路径(比如kotlin/model.mustache),插件生成时会自动优先使用自定义模板替换默认模板,重新生成模型类。
2. 新增自定义模型处理模板
如果不想覆盖默认模板,而是要额外生成一份用自定义模板处理的模型文件,可以在<files>里新增一个模型类型的配置:
<files> <file> <template>custom_model.mustache</template> <templateType>Model</templateType> <destinationFilename>Custom{{modelName}}.kt</destinationFilename> </file> </files>
这样插件会基于你的custom_model.mustache模板,为每个API模型生成一份后缀为Custom的额外模型文件,实现重新处理的效果。
内容的提问来源于stack exchange,提问作者Patryk Imosa
相关产品推荐
相关产品推荐

