swagger-codegen 没有为任何语言正确生成公共参数

swagger-codegen is not correctly generating common parameters for any language

根据swagger documentation,我应该能够拥有所有操作共享的公共参数。问题是,当 运行 codegen 在本地时,生成的代码没有任何 common path 参数。下面的 yaml 生成任何语言的代码(我试过两种)。

非常令人困惑的是,如果我在 https://editor.swagger.io/ 中使用这个确切的 yaml,生成的代码 确实 具有路径参数。我 运行 这是两种不同的语言,打字稿:

和 C#:

左边是在 editor.swagger.io 中生成的代码,右边是我在本地 运行 codegen 生成的代码。

在这两种情况下,.swagger-codegen\VERSION 文件是 3.0.20,这是我正在使用的文件,但 https://editor.swagger.io/ 生成的代码确实具有参数路径。

这个简单的 yaml 文件重现了这个问题:

openapi: 3.0.2
info:
    title: title
    version: 1.0.0
paths:
    '/instances/{id}':
        summary: Manipulate a particular instance
        get:
            responses:
                '200':
                    description: Ok
                    content:
                        text/plain:
                          schema:
                            type: string
                            example: pong
            summary: Fetches an instance
        parameters:
            -   in: path
                name: id
                schema:
                    type: integer
                required: true
components:
    securitySchemes:
        bearerAuth:
            scheme: bearer
            bearerFormat: JWT
            type: http

生成使用的命令行:

java   ^
    -classpath bin/swagger-codegen-cli.jar                                      ^
    -DdebugOperations                                                           ^
    io.swagger.codegen.v3.Codegen                                               ^
    generate                                                                    ^
    -i enterpos-api.yaml                                                        ^
    -l typescript-angular                                                       ^
    -o generated-code/typescript-angular-builtin

并生成此输出:https://gist.github.com/alanboy/45ce792255e079dd0de4f70449ebf455。我觉得这可能是错误的用法或我的 yaml 有问题,但我不知道是什么。

主要问题 class。我注意到使用 io.swagger.codegen.v3.Codegen class 会产生不正确的结果:

java -classpath bin/swagger-codegen-cli.jar  io.swagger.codegen.v3.Codegen  <more>
                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

但这行得通:

java -jar bin/swagger-codegen-cli.jar <more>

这导致我在罐子中打开 MANIFEST.MF 并注意到主要的 class 实际上是这样的:

Main-Class: io.swagger.codegen.v3.cli.SwaggerCodegen

然后我 运行 这样的命令,一切都按预期进行。

java -classpath bin/swagger-codegen-cli.jar  io.swagger.codegen.v3.cli.SwaggerCodegen  <more>
                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^