我们如何在Bazel上生成OpenAPI文件?

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

我们正在将 Maven 项目迁移到 Bazel。在此项目中,我们从 Java 注释生成了 OpenAPI 文档并使用

swagger-maven-plugin
,如下所示:

<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
投票

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

参考:从 Maven 迁移到 Bazel

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

相反,我建议您采用以下方法: OpenAPI 生成器 Bazel

您还可以检查:


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 规则添加到工作区

     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代码生成工具

    您必须配置 swagger-config.json 来指定项目所需的设置和选项

  4. 建立目标:

     bazel build //path/to:my_swagger_gen
    

    生成的 OpenAPI 文档保存在文件 swagger.json

  5. 与 Bazel 构建管道集成

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

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