Open2

IntelliJでgradleタスク(openapi-generator)が実行できなくなった時の対応

ふじしろふじしろ

OpenAPI Generator
https://github.com/OpenAPITools/openapi-generator

のopenApiGenerateをgradleタスクで実行しても、更新差分を反映してくれなくなった。
(swaggerファイルを変更しても、差分がない扱い(UP-TO-DATE)になり、クラスの自動生成ができない状態)

結論

  1. Finderを活用して対象のswaggerファイルを、IntelliJのプロジェクト外のディレクトリへ移動
  2. openApiGenerateが失敗することを確認
  3. 対象のswaggerファイルを再びIntelliJのプロジェクト内のディレクトリに戻す
  4. openApiGenerateが成功することを確認
ふじしろふじしろ

やったけど治らなかったこと

  • IntelliJ再起動
  • キャッシュクリア
  • 右ペインのGradleタスクから実行
  • cleanしてから再度実行※
  • mac再起動

※の流れ

% ./gradlew clean
Configuration on demand is an incubating feature.

> Configure project :
Warning: 'kapt.use.worker.api' is deprecated and scheduled to be removed in Kotlin 1.8 release.

By default Kapt plugin is using Gradle workers to run annotation processing. Running annotation processing
directly in the Kotlin compiler is deprecated.

> Task :xxx:clean UP-TO-DATE
> Task :xxx:clean UP-TO-DATE
> Task :clean

BUILD SUCCESSFUL in 5s
3 actionable tasks: 1 executed, 2 up-to-date

% ./gradlew openApiGenerate
Configuration on demand is an incubating feature.

> Configure project :
Warning: 'kapt.use.worker.api' is deprecated and scheduled to be removed in Kotlin 1.8 release.

By default Kapt plugin is using Gradle workers to run annotation processing. Running annotation processing
directly in the Kotlin compiler is deprecated.

> Task :openApiGenerate UP-TO-DATE

BUILD SUCCESSFUL in 5s
1 actionable task: 1 up-to-date

対応メモ

  1. IntelliJ上で対象のswagger(yamlファイル)を削除
  2. ./gradlew openApiGenerate実行
  3. 最新版ですと言われる(UP-TO-DATE)
  4. finderから対象のswagger(yamlファイル)が存在するディレクトリを開く
  5. 1で削除したつもりの 対象のswagger(yamlファイル)があることを確認
  6. 一旦別フォルダに移動させる
  7. ./gradlew openApiGenerate実行
  8. 参照対象が存在しないエラー
  9. -> InteliJがうまくファイルの変更を読み込めてないっぽい。ので一旦他のエディタで修正対応する
  10. 対象のswagger(yamlファイル)を再び指定ディレクトリに戻したらIntelliJが認識しなおし、./gradlew openApiGenerateが実行できるようになった。