如何在 Swagger 中连接 importMappings 和 yaml

How to connect importMappings and yaml in Swagger

我有 Spring RESTfull 应用程序,我想为其生成一个 API。我从 https://github.com/Casturan/swagger-gradle-example/blob/master/build.gradle 使用 gradle 配置来生成代码。但是它使用 definitions: 中定义的模型时出现问题,而我希望它使用共享模块中的模型。我发现我需要使用 importMapping,但是当我尝试在我的 build.gradle 中应用此命令时,出现错误:

importMappings = [
   'board_container': 'board_container=com.workingbit.share.domain.impl.BoardContainer'
]
> Could not set unknown property 'importMappings' for task ':myproject:generateApi' of type org.gradle.api.DefaultTask.

那么问题是如何使用 importMapping 以及如何将它与我在 yaml 中的模型连接?

我还没有尝试过,但是查看 CodegenConfigurator 的代码,在 build.gradle 中像这样修改 generateApi 任务可能会起作用:

task generateApi {
  inputs.file("$projectDir/$swaggerSourceFile")
  outputs.dir("$projectDir/$swaggerTargetFolder")
  doLast{
    def config = new CodegenConfigurator()
    config.setInputSpec("file:///$projectDir/$swaggerSourceFile")
    config.setOutputDir("$projectDir")
    config.setLang('spring')
    config.setAdditionalProperties([
        'interfaceOnly' : 'true',
        'apiPackage'    : 'com.dturan.api',
        'modelPackage'  : 'com.dturan.model',
        'sourceFolder'  : swaggerTargetFolder
    ])
    //Add this line
    config.addImportMapping("board_container", "com.workingbit.share.domain.impl.BoardContainer")
    new DefaultGenerator().opts(config.toClientOptInput()).generate()
  }
}

CodegenConfigurator 在您问题中链接到的 build.gradle 的第二行被调用,它有一些配置方法 importMappings。你可以看看here(如果这不起作用试试setImportMappings)。