Swagger Codegen ジェネレーターの設定
コードジェネレーター(このバージョンではswagger codegen generator repoにあります)をカスタマイズするには、テンプレートを作成または変更する以外にもさまざまな側面があります。各言語には、異なる型マッピングなどを処理するためのサポート設定ファイルがあります。
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
値がオーバーライドされます。
独自のモデルを導入する
場合によっては、モデルを生成したくないことがあります。この場合、import マッピングを指定して、何を生成しないかをコード生成に伝えることができます。これを行うと、特定のモデルを参照するすべての場所が、ご自身のクラスを参照するようになります。
なお、これはすべての言語に当てはまらない場合があります!
インポートマッピングを指定するには、--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