如何在Bazel上生成Open API文件?

问题描述 投票:0回答:2

因此我们正在将 Maven 项目迁移到 Bazel。在此项目中,我们从 Java 注释并使用

swagger-maven-plugin
生成了 Open API 文档,如下所示:

<plugin>
    <groupId>io.swagger.core.v3</groupId>
    <artifactId>swagger-maven-plugin</artifactId>
    <version>2.1.1</version>
    <configuration>
        <outputFileName>swagger</outputFileName>
        <outputPath>${project.basedir}/src/main/resources/webroot</outputPath>
        <outputFormat>JSON</outputFormat>
        <resourcePackages>
            <package>com.example.package1</package>
            <package>com.example.package2</package>
        </resourcePackages>
        <prettyPrint>true</prettyPrint>
    </configuration>
    <executions>
        <execution>
            <phase>compile</phase>
            <goals>
                <goal>resolve</goal>
            </goals>
        </execution>
    </executions>
</plugin>

有没有办法使用 Bazel 规则生成此文件?

openapi bazel
2个回答
0
投票

1.创建 Bazel 构建规则

load("@io_bazel_rules_swagger//swagger:swagger.bzl", "swagger_gen")

swagger_gen(
    name = "my_swagger_gen",
    output = "swagger.json",
    resource_packages = [
        "com.example.package1",
        "com.example.package2",
        # Add more packages if needed
    ],
)

2.将 Swagger 规则添加到 WORKSPACE

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "io_bazel_rules_swagger",
    urls = ["https://github.com/bazelbuild/rules_swagger/archive/master.tar.gz"],
    strip_prefix = "rules_swagger-master",
)

load("@io_bazel_rules_swagger//swagger:swagger_deps.bzl", "swagger_register_toolchains")
swagger_register_toolchains()

3 配置 Swagger Codegen 工具 你有confin swagger-config.json来指定你的项目所需的设置和选项 4 建立目标:

bazel build //path/to:my_swagger_gen

生成的openapi文档保存在swagger.json中 5 与 Bazel 构建管道集成 您可以通过在构建主项目之前添加触发 Swagger 生成的依赖项或自定义构建规则,将 OpenAPI 文档的生成集成到 Bazel 构建管道中。


0
投票

注意:虽然Bazel支持使用rules_jvm_external下载和发布Maven工件,但它不直接支持基于Maven的插件。 Maven 插件无法直接由 Bazel 运行,因为没有 Maven 兼容层。

参考:https://bazel.build/migrate/maven

这意味着这个 Maven 插件不适用于 bazel 构建

相反,我建议您采用以下方法:
https://github.com/OpenAPITools/openapi-generator-bazel

你也可以检查一下:
https://damuliu.medium.com/openapi-code- Generation-bazel-and-spring-boot-e7a3603b3289
https://github.com/meetup/rules_openapi

© www.soinside.com 2019 - 2024. All rights reserved.