如何通过程序调用Swagger Codegen?

3

我正在使用swagger-codgen-cli.jar生成一个restful 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构建你的应用程序? - abarisone
目前我正在使用Maven构建Swagger-Codegen,根据如何使用Swagger,我可以有多个选项(Maven、Ant)。 - MidgarZolom
我需要阅读关于这个插件的内容。(现在从我的正常账户写,不知道为什么我的登录出了问题...) - Gobliins
1个回答

4
如果我正确理解您的需求,您希望动态生成存根类。那么为什么不使用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() 的替代方法

下一步将是动态生成API。但也许你误解了我的问题。如果我正确理解这个插件,它是围绕Swagger的命令行选项为Maven而设计的包装器? - Gobliins
但是你的最终目标是什么?是创建存根还是其他? - abarisone
目标是:一个Java程序,可以像命令行一样运行swagger-code-generator。类似于SwaggerGenerator gen = new SwaggerGenerator(); gen.setLanguage("jax-rs"); gen.setYaml("...") gen.generateApi()。 - Gobliins
这意味着从yaml或json api描述中生成目标语言(在本例中为java jax-rs)的java源文件。 - Gobliins
我认为是的...已创建的存根 - Gobliins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接