【问题标题】:How to call swagger codegen programmatically?如何以编程方式调用swagger codegen?
【发布时间】:2015-09-30 09:56:39
【问题描述】:

我正在使用 swagger-codgen-cli.jar 生成一个安静的 java jax-rs api。
现在我用一些命令行选项调用 java -jar 来执行此操作。

java -jar swagger-codegen-cli.jar generate -i api.yaml -l jaxrs -o ./outputdir

效果很好。

但我想从 Java 程序中进行此调用,即将 codegen.jar 包含到我的类路径中,然后使用类似的参数调用相应的方法。

那么,我可以调用 swagger-codegen 模块的公共 API 吗?

【问题讨论】:

  • 您是否正在使用 Maven 构建您的应用程序?
  • Atm 我用 maven 构建 swagger-codegen,取决于如何使用 swagger,我可以有多个选项(maven、ant)
  • 我需要了解这个插件。 (现在用我的普通帐户写,不知何故我的登录被搞砸了......)

标签: java rest jax-rs swagger


【解决方案1】:

如果我正确理解您的需求,您希望动态生成存根类。那么为什么不使用swagger-codegen-maven-plugin 来生成存根类呢?

如使用部分所述,只需添加到您的 build->plugins 部分(默认阶段是 generate-sources 阶段)

<plugin>
    <groupId>com.garethevans.plugin</groupId>
    <artifactId>swagger-codegen-maven-plugin</artifactId>
    <version>${project.version}</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <inputSpec>src/main/resources/api.yaml</inputSpec>
                <language>java</language>
            </configuration>
        </execution>
    </executions>
</plugin>

如果您想从程序中执行命令,您可以使用Runtime.getRuntime().exec()Runtime.getRuntime().exec() alternatives

【讨论】:

  • 下一步是动态生成 API 是的。但也许你误解了我的问题。如果我正确理解这个插件,它是 maven 的 swaggers 命令行选项的包装器?
  • 但你的最终目标是什么?是否创建了存根?
  • 目标是:一个ja​​va程序,像命令行一样运行swagger-code-generator。像 SwaggerGenerator 那样的东西 gen = new SwaggerGenerator(); gen.setLanguage("jax-rs"); gen.setYaml("...") gen.generateApi()
  • 这意味着,从 yaml 或 json api 描述生成目标语言(在本例中为 java jax-rs)java 源文件。
  • 我认为是的......创建的存根
猜你喜欢
  • 1970-01-01
  • 2022-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2010-10-04
相关资源
最近更新 更多