首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swagger Codegen使用现有类

Swagger Codegen使用现有类
EN

Stack Overflow用户
提问于 2017-06-18 13:40:57
回答 3查看 12.8K关注 0票数 10

如何让swagger codegen使用现有的类,而不是创建新的类?这个是可能的吗?例如,我想使用org.springframework.data.domain.Page而不是swagger来创建另一个页面类。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-19 04:20:15

按照here的解释,您可以使用--import-mappings

有时你不想生成一个模型。在这种情况下,您可以简单地指定一个导入映射来告诉codegen不要创建什么。在执行此操作时,引用特定模型的每个位置都将引用回您的类。

您可以在swagger-codegen-cli generate上调用它,包含的示例如下所示

--import-mappings Page=org.springframework.data.domain.Page

尽管importMappings没有包含在通用配置参数here中,但是如果您查看代码here,就会发现它是一个List<String>。我还没有在maven插件中使用它,但是看着文档和代码,我猜这应该可以工作:

代码语言:javascript
复制
<plugin>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-codegen-maven-plugin</artifactId>
    <version>2.2.2-SNAPSHOT</version>
    <executions>
        <execution>
            ...
            <configuration>
                ...
                <importMappings>
                   <importMapping>Page=org.springframework.data.domain.Page</importMapping>
                </importMappings>
            </configuration>
        </execution>
    </executions>
</plugin> 

但这是recently changed,所以如果你使用的是旧版本的插件,它可能会有所不同。在此之前,它似乎是这样的:

代码语言:javascript
复制
<plugin>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-codegen-maven-plugin</artifactId>
    <version>2.2.2-SNAPSHOT</version>
    <executions>
        <execution>
            ...
            <configuration>
                ...
                <configOptions>
                   <import-mappings>Page=org.springframework.data.domain.Page;Some=org.example.Some</import-mappings>
                </configOptions>
            </configuration>
        </execution>
    </executions>
</plugin>

根据commit中的评论,旧版本也应该被支持,但我还没有尝试过这些,所以让我知道它是否有效。

票数 19
EN

Stack Overflow用户

发布于 2018-11-17 03:38:14

这里提到的答案都没有提到要添加到swagger yaml文件中,以防有人感兴趣,这是对我有效的东西:

代码语言:javascript
复制
DisplayProperty:  
  type: object
  properties:
    name:
      type: string
    displayName:
      $ref: '#/components/schemas/Text'
    isRequired:
      type: boolean
      example: false
Text:
    type: object

然后把这个放到pom里

代码语言:javascript
复制
<importMappings>
<importMapping>Text=com.--.--.--.--.Text</importMapping>

票数 13
EN

Stack Overflow用户

发布于 2018-05-22 15:00:14

如果您有很长的映射列表,则并不总是可以使用--import-mappings。(至少在Windows情况下,它对命令提示符中的字符串有大小限制。)这就是为什么更好的方法:使用带有swagger配置文件的映射。(此选项没有完整的文档记录。)

就像这样:

java -jar swagger-codegen-cli-2.3.1.jar generate -i myspec.yaml -l java -c myconfig.json

myconfig.json:

代码语言:javascript
复制
{
  "hideGenerationTimestamp": true,
  "dateLibrary": "java8",
  "useRuntimeException": true,
  "modelPackage": "org.my.package.model",
  "apiPackage": "org.my.package.api",
  "importMappings": {
    "Page": "org.springframework.data.domain.Page",
    "MySuperType": "org.my.SuperType"
  }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44612080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档