openapi-generatorをコンパイル
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
#contents
* 趣旨 [#e2d3c692]
openapi-generatorは、javaのmavenプロジェクトなのですが、
どういうわけか、そのままではコンパイルができなかったので、
その時のコンパイルできるようにするまでのコツをメモしてお...
* 前提条件 [#eec91e01]
mavenがインストールされていること
java11あたりがインストールされていること、おそらくopenapi...
Javaのパスを環境変数のJAVA_HOMEに通しておきましょう。
* コツ [#k5255406]
pom.xmlの
failOnWarnings
をfalseにします。
つぎの指定をいれたほうがいいかもしれません
MAVEN_OPTS=--illegal-access=permit
** Openapi-generatorを解析しづらくしている技術 [#cebc400b]
ソースコードで標準出力とかにダンプしたりすると、解析が楽...
ところが、そういうコードがあると、ジェネレータのビルドの...
誰得?な感じですね。
*** どんなエラーがでるのか? [#x2cf06c1]
たったの1行でも、
System.out.println("hoge");
とでも書こうものなら
ArchUnitRulesTestに記載されたルールのテストにて、以下のビ...
Rule 'no classes should access standard streams' was vio...
*** 小さな親切大きなお世話なテストライブラリ [#gd7b9950]
リリース時にはありがたいのだが、解析するには邪魔なライブ...
https://www.freecodecamp.org/news/java-archunit-testing-t...
なので、ArchUnitRulesTestのテストはDisabledにしておいたほ...
* 改造ポイント [#jd1e206b]
改造する箇所は、モデルクラスについてであれば、
postProcessAllModels(Map<String, Object> objs)
です。
objsにはyaml定義直下の要素の配列が格納されているので、以...
for (Map.Entry<String, Object> entry: objs.entrySet()
さらに、ここにはmodelが複数格納されているので、以下のよう...
Map<String, Object> inner = (Map<String, Object>) entry....
List<Map<String, Object>> models = (List<Map<String, Obj...
for(Map<String, Object> mo: models)
これを1つのモデルごとの処理単位だったら、もう少し扱いや...
ここまで、汎用的なMapでしたが、ここまでくると、次のように...
CodegenModel cm = (CodegenModel) mo.get("model");
上記の変数moは、Mapでして、ここに独自の変数をkey,Valueで...
ちなみにboolean型ではダメで、Boolean型で登録する必要があ...
*** model内の変数についても扱う [#ddc6c6d5]
model内の変数について扱いたい場合は、上記のCodegenModelの...
for (CodegenProperty cp : cm.vars)
とします、注意点としては、ジェネリック型の場合は以下のパ...
- cp.baseName
- cp.complexType
とくにcp.complexTypeが指定されていない場合は、Object型と...
* openapi-generatorで使うパラメータ [#fdd45535]
--model-package
これはパッケージ名を指定するパラメータだ
--api-package
これはコントローラクラス名だったはず
--model-name-suffix
モデル名の末尾につける名称だ。openapiのモデル名にsuffixが...
-p
これ!、一番わかりづらい。openapi-generatorは、オプション...
** -pでごちゃっと指定するパラメータ [#u9acb779]
指定の記法は、
-p 変数名=値,変数名=値,変数名=値,変数名=値,変数名=値
だ。
*** (springジェネレータの場合)おすすめパラメータと設定 [#...
dateLibrary=java8-localdatetime
hideGenerationTimestamp=true
openApiNullable=false
prependFormOrBodyParameters=true
serializableModel=true
serializationLibrary=gson
*** (javaジェネレータの場合)おすすめパラメータと設定 [#g9...
openApiNullable=false
serializableModel=true
returnSuccessCode=true
prependFormOrBodyParameters=true
oas3=true
hideGenerationTimestamp=true
interfaceOnly=true(初回除く)
終了行:
#contents
* 趣旨 [#e2d3c692]
openapi-generatorは、javaのmavenプロジェクトなのですが、
どういうわけか、そのままではコンパイルができなかったので、
その時のコンパイルできるようにするまでのコツをメモしてお...
* 前提条件 [#eec91e01]
mavenがインストールされていること
java11あたりがインストールされていること、おそらくopenapi...
Javaのパスを環境変数のJAVA_HOMEに通しておきましょう。
* コツ [#k5255406]
pom.xmlの
failOnWarnings
をfalseにします。
つぎの指定をいれたほうがいいかもしれません
MAVEN_OPTS=--illegal-access=permit
** Openapi-generatorを解析しづらくしている技術 [#cebc400b]
ソースコードで標準出力とかにダンプしたりすると、解析が楽...
ところが、そういうコードがあると、ジェネレータのビルドの...
誰得?な感じですね。
*** どんなエラーがでるのか? [#x2cf06c1]
たったの1行でも、
System.out.println("hoge");
とでも書こうものなら
ArchUnitRulesTestに記載されたルールのテストにて、以下のビ...
Rule 'no classes should access standard streams' was vio...
*** 小さな親切大きなお世話なテストライブラリ [#gd7b9950]
リリース時にはありがたいのだが、解析するには邪魔なライブ...
https://www.freecodecamp.org/news/java-archunit-testing-t...
なので、ArchUnitRulesTestのテストはDisabledにしておいたほ...
* 改造ポイント [#jd1e206b]
改造する箇所は、モデルクラスについてであれば、
postProcessAllModels(Map<String, Object> objs)
です。
objsにはyaml定義直下の要素の配列が格納されているので、以...
for (Map.Entry<String, Object> entry: objs.entrySet()
さらに、ここにはmodelが複数格納されているので、以下のよう...
Map<String, Object> inner = (Map<String, Object>) entry....
List<Map<String, Object>> models = (List<Map<String, Obj...
for(Map<String, Object> mo: models)
これを1つのモデルごとの処理単位だったら、もう少し扱いや...
ここまで、汎用的なMapでしたが、ここまでくると、次のように...
CodegenModel cm = (CodegenModel) mo.get("model");
上記の変数moは、Mapでして、ここに独自の変数をkey,Valueで...
ちなみにboolean型ではダメで、Boolean型で登録する必要があ...
*** model内の変数についても扱う [#ddc6c6d5]
model内の変数について扱いたい場合は、上記のCodegenModelの...
for (CodegenProperty cp : cm.vars)
とします、注意点としては、ジェネリック型の場合は以下のパ...
- cp.baseName
- cp.complexType
とくにcp.complexTypeが指定されていない場合は、Object型と...
* openapi-generatorで使うパラメータ [#fdd45535]
--model-package
これはパッケージ名を指定するパラメータだ
--api-package
これはコントローラクラス名だったはず
--model-name-suffix
モデル名の末尾につける名称だ。openapiのモデル名にsuffixが...
-p
これ!、一番わかりづらい。openapi-generatorは、オプション...
** -pでごちゃっと指定するパラメータ [#u9acb779]
指定の記法は、
-p 変数名=値,変数名=値,変数名=値,変数名=値,変数名=値
だ。
*** (springジェネレータの場合)おすすめパラメータと設定 [#...
dateLibrary=java8-localdatetime
hideGenerationTimestamp=true
openApiNullable=false
prependFormOrBodyParameters=true
serializableModel=true
serializationLibrary=gson
*** (javaジェネレータの場合)おすすめパラメータと設定 [#g9...
openApiNullable=false
serializableModel=true
returnSuccessCode=true
prependFormOrBodyParameters=true
oas3=true
hideGenerationTimestamp=true
interfaceOnly=true(初回除く)
ページ名: