Swagger Codegen 產生器設定
除了建立或修改範本之外,還可以從不同方面自訂程式碼產生器(在此版本中位於 swagger codegen 產生器存放庫)。每種語言都有一個支援的設定檔,以處理不同的類型對應等。
1s -1 modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/2
3AbstractJavaCodegen.java4AbstractJavaJAXRSServerCodegen.java5... (results omitted)6JavaClientCodegen.java7JavaJAXRSSpecServerCodegen.java
每個檔案都會建立合理的預設值,讓您可以快速執行。如果您想要設定套件名稱、前置詞、模型資料夾等,可以使用 JSON 設定檔來傳遞這些值。
1java -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}
無法運作,請開啟 工單,我們會進行調查。
1java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar config-help -l java
輸出
1CONFIG OPTIONS2modelPackage3 package for generated models4
5apiPackage6 package for generated api classes7...... (results omitted)8library9 library template (sub-template) to use:10 jersey1 - HTTP client: Jersey client 1.18. JSON processing: Jackson 2.4.211 jersey2 - HTTP client: Jersey client 2.612 feign - HTTP client: Netflix Feign 8.1.1. JSON processing: Jackson 2.6.313 okhttp-gson (default) - HTTP client: OkHttp 2.4.0. JSON processing: Gson 2.3.114 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
1package com.mycompany.swagger.codegen;2
3import io.swagger.codegen.languages.*;4
5public 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