跳到内容

Swagger Codegen 生成器配置

除了创建或修改模板之外,自定义代码生成器(位于此版本的 swagger codegen 生成器仓库)还有不同的方面。每种语言都有一个支持配置文件来处理不同的类型映射等

终端窗口
1
s -1 modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/
2
3
AbstractJavaCodegen.java
4
AbstractJavaJAXRSServerCodegen.java
5
... (results omitted)
6
JavaClientCodegen.java
7
JavaJAXRSSpecServerCodegen.java

这些文件中的每一个都会创建合理的默认值,因此您可以快速运行。 如果要配置包名称、前缀、模型文件夹等,可以使用 JSON 配置文件来传递值。

终端窗口
1
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate \
2
-i http://petstore.swagger.io/v2/swagger.json \
3
-l java \
4
-o samples/client/petstore/java \
5
-c path/to/config.json

config.json 包含以下示例

1
{
2
"apiPackage" : "petstore"
3
}

每个语言支持的配置选项可能不同。 运行 config-help -l {lang} 将显示可用选项。 这些选项通过配置文件(例如 config.json)应用,或通过 -D{optionName}={optionValue} 传递。

如果 -D{optionName} 不起作用,请打开一个 工单,我们会调查它。

终端窗口
1
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar config-help -l java

输出

1
CONFIG OPTIONS
2
modelPackage
3
package for generated models
4
5
apiPackage
6
package for generated api classes
7
...... (results omitted)
8
library
9
library template (sub-template) to use:
10
jersey1 - HTTP client: Jersey client 1.18. JSON processing: Jackson 2.4.2
11
jersey2 - HTTP client: Jersey client 2.6
12
feign - HTTP client: Netflix Feign 8.1.1. JSON processing: Jackson 2.6.3
13
okhttp-gson (default) - HTTP client: OkHttp 2.4.0. JSON processing: Gson 2.3.1
14
retrofit - HTTP client: OkHttp 2.4.0. JSON processing: Gson 2.3.1 (Retrofit 1.9.0)
15
retrofit2 - HTTP client: OkHttp 2.5.0. JSON processing: Gson 2.4 (Retrofit 2.0.0-beta2)
16
google-api-client - HTTP client: google-api-client 1.23.0. JSON processing: Jackson 2.8.9

您的 Java 配置文件可以如下所示

1
{
2
"groupId":"com.my.company",
3
"artifactId":"MyClient",
4
"artifactVersion":"1.2.0",
5
"library":"feign"
6
}

对于所有未指定的选项,将使用默认值。

覆盖默认选项的另一种方法是扩展特定语言的配置类。 例如,要更改 Objective-C 生成文件的前缀,只需子类化 ObjcClientCodegen.java

1
package com.mycompany.swagger.codegen;
2
3
import io.swagger.codegen.languages.*;
4
5
public class MyObjcCodegen extends ObjcClientCodegen {
6
static {
7
PREFIX = "HELO";
8
}
9
}

并在运行生成器时指定 classname

终端窗口
1
-l com.mycompany.swagger.codegen.MyObjcCodegen

现在将加载您的子类并覆盖超类中的 PREFIX 值。

自带模型

有时您不希望生成模型。 在这种情况下,您只需指定导入映射,以告知 codegen 什么 创建。 执行此操作时,引用特定模型的每个位置都将引用回您的类。

请注意,这可能不适用于所有语言!

要指定导入映射,请使用 --import-mappings 参数并指定模型到导入的逻辑,如下所示

终端窗口
1
--import-mappings Pet=my.models.MyPet

或用于多个映射

终端窗口
1
--import-mappings Pet=my.models.MyPet,Order=my.models.MyOrder

或者

终端窗口
1
--import-mappings Pet=my.models.MyPet --import-mappings Order=my.models.MyOrder