如何让swagger codegen使用现有的类,而不是创建新的类?这个是可能的吗?例如,我想使用org.springframework.data.domain.Page而不是swagger来创建另一个页面类。
发布于 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插件中使用它,但是看着文档和代码,我猜这应该可以工作:
<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,所以如果你使用的是旧版本的插件,它可能会有所不同。在此之前,它似乎是这样的:
<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中的评论,旧版本也应该被支持,但我还没有尝试过这些,所以让我知道它是否有效。
发布于 2018-11-17 03:38:14
这里提到的答案都没有提到要添加到swagger yaml文件中,以防有人感兴趣,这是对我有效的东西:
DisplayProperty:
type: object
properties:
name:
type: string
displayName:
$ref: '#/components/schemas/Text'
isRequired:
type: boolean
example: false
Text:
type: object然后把这个放到pom里
<importMappings>
<importMapping>Text=com.--.--.--.--.Text</importMapping>
发布于 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:
{
"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"
}
}https://stackoverflow.com/questions/44612080
复制相似问题