微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 springdoc-openapi-maven-plugin 和 swagger-codegen-maven-plugin 生成客户端代码?

如何解决如何使用 springdoc-openapi-maven-plugin 和 swagger-codegen-maven-plugin 生成客户端代码?

我的目标是使用 OpenAPI 3.0 生成 Spring Boot REST 客户端

我想首先生成我的 API 的 OpenAPI 规范文件(springdoc-openapi-maven-plugin),然后然后从此文件生成客户端代码(swagger -codegen-maven-plugin) 使用 Maven。

我的问题是 swagger-codegen-maven-pluginspringdoc-openapi-maven-plugin 之前执行。所以,当swagger-codegen-maven-plugin执行时,springdoc-openapi-maven-plugin生成输出文件是不存在的。

如何在 swagger-codegen-maven-plugin 之前执行 springdoc-openapi-maven-plugin 给定以下 Maven 构建插件配置?

我的 Maven 构建插件配置:

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.4.1</version>
                <executions>
                    <execution>
                        <id>pre-integration-test</id>
                        <goals>
                            <goal>start</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>post-integration-test</id>
                        <goals>
                            <goal>stop</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.springdoc</groupId>
                <artifactId>springdoc-openapi-maven-plugin</artifactId>
                <version>1.1</version>
                <executions>
                    <execution>
                        <id>integration-test</id>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <apiDocsUrl>myServerUrl:myPort/v3/api-docs</apiDocsUrl>
                    <outputFileName>openApiFile.json</outputFileName>
                    <outputDir>${project.basedir}/src/main/resources</outputDir>
                    <skip>false</skip>
                </configuration>
            </plugin>

            <plugin>
                <groupId>io.swagger.codegen.v3</groupId>
                <artifactId>swagger-codegen-maven-plugin</artifactId>
                <version>3.0.24</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <inputSpec>${project.basedir}/src/main/resources/openApiFile.json</inputSpec>
                            <language>typescript-angular</language>
                            <configOptions>
                                <sourceFolder>src/gen/java/main</sourceFolder>
                            </configOptions>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

解决方法

问题是 springdoc-openapi-maven-pluginintegration-test 阶段执行,而 swagger-codegen-maven-plugin 默认阶段是 {{ 1}} 在构建生命周期中的 generate-sources 之前执行。

我刚刚为 swagger-codegen-maven-plugin 指定了一个阶段,它在 integration-test 之后:integration-test

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。