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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:02:40