OpenAPIでJavaのクライアントサイドのコードを生成しようとした。
いくつか試すと、色々とすごい数のファイルを作るものが多い中、microprofileは比較的少なめで良さそうに見えた。
というわけで生成して、importに何が足りないか確認していた。
と、生成されたコードの上部にApache Licenseの表記が。
仕事でしている以上、これはOSSではないので、Apache Licenseとか勝手につけられるのは正直困る。トラブルにはなりにくいライセンスであるとはいえ。
もしかしてこれまでも気がつかずに......?と思い過去の typescript-angularやjax-rs+quarkusでの生成コードもみたが、そちらはライセンスの追加はなかった。
仕方がないのでjava + microprofileでの生成をやめて、java + resteasyで仕事としては進めることにした。
ちなみに、生成は次のような方法で実現した。
(普通はビルドプロセスに組み込むのだけど、動作確認中なのでcompileJava.dependsOn tasks.openApiGenerateのように組み込むことはしなかった)
build.gradle(一部):
task testSpecOpenApiGenerate(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask) {
generatorName = 'java'
configFile = "${rootDir}/src/main/resources/external/openapi-config.json"
inputSpec = "${rootDir}/src/main/resources/external/petstore.yaml"
outputDir = "${rootDir}/src/gen"
}
openapi-config.json:
{
"apiPackage": "xxxx.xxxx.xxxx.external.infrastructure.xxxx.resources",
"dateLibrary": "java8",
"generatePom": false,
"library": "microprofile",
"modelPackage": "xxxx.xxxx.xxxx.external.infrastructure.xxxx.model",
"openApiNullable": true,
"packagesName": "xxxx.xxxx.xxxx",
"sourceFolder": "java"
}
そして次のコマンドで実行して生成した。
./gradlew testSpecOpenApiGenerate
この困りごとをIssueに上げないとなと思いながらTwitterにぼやいてたら、メンテナーからIssueあげてね、と直接メンションがきてしまったので自分の中のPriorityをあげて、次のチケットを起票した。(メンテナーとして、そういうSNS巡回も重要なのかもしれない)
いずれにせよ、直近ではあまりリリースがされていない状況を見ると、メジャーバージョン改定に向けた動きが中心となっているのだと思うので、どちらにせよ今の仕事には間に合わなそう。さすがに仕事でベータ版リリースされている5.0.0-beta2を使うのは適切とは言い難いし。
時間的な余裕を見つけて自分で対応箇所を特定し、そして直してしまえるならそれが一番いいのだろうけどね。