スキップしてメイン コンテンツに移動

OpenAPI Generator 4.3.1でJava向けGeneratorとmicroprofileの組み合わせによって生成されるライセンスの問題

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を使うのは適切とは言い難いし。

時間的な余裕を見つけて自分で対応箇所を特定し、そして直してしまえるならそれが一番いいのだろうけどね。