设置swagger API版本的动态版本

Bal*_*dam 2 annotations swagger swagger-ui spring-boot openapi

我试图在下面的注释中使版本动态化。

@SpringBootApplication
@OpenAPIDefinition(info = @Info(title = "Test APIs", version = "${project.version}", description = "Testing APIs"))
public class DemoApplication {

}
Run Code Online (Sandbox Code Playgroud)

在这里,我想让版本动态化,这样它将从 pom.xml 文件中获取值。

我需要为此进行任何配置吗?TIA。

小智 5

您可以以编程方式定义 OpenAPIDefinition 并使用 BuildProperties 设置 OpenAPIDefinition.info 数据,如下所示:

@SpringBootApplication
public class ApiApplication {

    @Autowired
    private BuildProperties buildProperties;

    public static void main(String[] args) {
        SpringApplication.run(ApiApplication.class, args);
    }

    @Bean
    OpenAPI customOpenAPI() {
        return new OpenAPI()
            .components(new Components())
            .info(new Info()
                .title(buildProperties.getArtifact() + " API")
                .version(buildProperties.getVersion())
                .description(buildProperties.getArtifact() + " - API Swagger documentation")
                .license(new License().name("Apache 2.0").url("http://springdoc.org")));
    }
}
Run Code Online (Sandbox Code Playgroud)

您需要将“spring-boot-maven-plugin”中的“build-info”目标添加到 pom.xml 文件中,以便在代码中使用 de BuildProperties 组件:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>build-info</id>
                    <goals>
                        <goal>build-info</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)