如何在OpenAPI规范中为info.version设占位符并通过Maven构建替换?
实现OpenAPI YAML版本与Maven构件版本同步
完全可以做到,下面是两种常用的实现方式:
方法一:Maven资源过滤(简单直接)
这是最通用的方案,适合仅需替换YAML中版本号的场景:
- 在
openapi.yaml中把info.version设为Maven占位符:info: title: Your API Title version: '@project.version@' - 在
pom.xml中配置资源过滤,指定openapi.yaml所在目录开启变量替换:<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>openapi.yaml</include> </includes> </resource> </resources> </build> - 执行
mvn clean package,Maven会自动将@project.version@替换为当前构件的版本号。
方法二:OpenAPI Generator Maven插件适配(代码生成场景)
如果你的项目需要基于OpenAPI文件生成API代码,可以直接通过插件完成版本替换:
- 在
openapi.yaml中使用${project.version}作为占位符:info: title: Your API Title version: '${project.version}' - 在
pom.xml的插件配置中开启文件后处理,确保占位符被替换:<plugin> <groupId>org.openapitools</groupId> <artifactId>openapi-generator-maven-plugin</artifactId> <version>6.6.0</version> <executions> <execution> <goals> <goal>generate</goal> </goals> <configuration> <inputSpec>${project.basedir}/src/main/resources/openapi.yaml</inputSpec> <enablePostProcessFile>true</enablePostProcessFile> <configOptions> <version>${project.version}</version> </configOptions> </configuration> </execution> </executions> </plugin> - 执行构建命令时,插件会自动替换YAML中的版本占位符,同时生成对应版本的API代码。
注意事项
- 占位符格式需与Maven的资源过滤规则匹配,默认是
@...@,若修改了pom中的delimiters参数需同步调整占位符格式 - 若
openapi.yaml不在src/main/resources目录下,需对应修改resource节点的directory路径 - 确保构建时触发资源过滤阶段,
mvn clean package或mvn clean install都会自动执行该步骤
内容的提问来源于stack exchange,提问作者Chris Brown
相关产品推荐
相关产品推荐

