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

如何通过openapi-generator-maven-plugin动态设置OpenAPI规范版本

解决openapi-generator-maven-plugin生成yml缺少info节点并动态设置version的问题

方法1:直接通过插件configOptions配置info参数

这是最直接的方案,利用插件内置配置项直接生成带动态版本的info节点。在插件的<configuration>里添加<configOptions>,指定info相关字段,其中infoVersion直接引用Maven的${project.version}变量:

<plugin>
    <groupId>org.openapitools</groupId>
    <artifactId>openapi-generator-maven-plugin</artifactId>
    <version>6.6.0</version> <!-- 替换成你使用的插件版本 -->
    <executions>
        <execution>
            <id>generate-openapi-spec</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <generatorName>openapi-yaml</generatorName>
                <!-- 你的其他核心配置,比如java类路径、输出目录等 -->
                <configOptions>
                    <infoTitle>你的API服务名称</infoTitle>
                    <infoVersion>${project.version}</infoVersion>
                    <infoDescription>API功能描述</infoDescription>
                    <!-- 可选:添加联系人、许可证等其他info字段 -->
                    <infoContactName>技术支持</infoContactName>
                    <infoLicenseName>MIT</infoLicenseName>
                </configOptions>
            </configuration>
        </execution>
    </executions>
</plugin>

配置完成后,生成的openapi.yml会自动包含完整的info节点,version值就是当前项目的Maven版本,无需手动修改。

方法2:自定义模板注入动态版本

如果某些生成器对configOptions的info参数支持有限,可以自定义模板实现:

  1. 从openapi-generator官方仓库找到对应生成器的默认模板(比如openapi-yaml的模板文件),复制到项目的src/main/resources/openapi-templates目录下
  2. 修改模板中的info节点部分,将version设置为占位符${infoVersion}:
info:
  title: ${infoTitle}
  version: ${infoVersion}
  description: ${infoDescription}
  1. 在插件配置中指定模板目录,并在configOptions里传入infoVersion的值:
<configuration>
    <!-- 其他配置 -->
    <templateDirectory>${project.basedir}/src/main/resources/openapi-templates</templateDirectory>
    <configOptions>
        <infoVersion>${project.version}</infoVersion>
        <infoTitle>你的API服务名称</infoTitle>
    </configOptions>
</configuration>

方法3:Maven资源过滤后处理

如果前两种方法都不适用,可用Maven资源插件在生成后替换版本占位符:

  1. 先通过插件生成包含占位符的openapi.yml(比如手动在输入的Java注释或基础配置里添加info: { version: '@project.version@' })
  2. 配置maven-resources-plugin对生成的文件进行过滤,替换占位符:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.3.1</version>
    <executions>
        <execution>
            <id>filter-openapi-spec</id>
            <phase>process-resources</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}/final-spec</outputDirectory>
                <resources>
                    <resource>
                        <directory>${project.build.directory}/generated-spec</directory>
                        <includes>
                            <include>openapi.yml</include>
                        </includes>
                        <filtering>true</filtering>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

优先推荐方法1,无需额外文件或后处理步骤,直接通过插件配置实现需求。

内容的提问来源于stack exchange,提问作者zolv

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:26:28