Skip to content

OpenAPI GeneratorでJakarta EEパッケージを使用する方法

環境移行時の問題

Spring Boot 3.0.0へのアップグレードに伴い、javax.annotation.Generatedなどのjavax.*パッケージがJakarta EE仕様に移行しました。OpenAPI Generatorが従来のjavaxパッケージを生成すると、次のエラーが発生します:

java
エラー: パッケージjavax.annotationは存在しません

解決にはジェネレータの設定変更が必要です。

解決策の実現方法

方法1: useJakartaEe プロパティを使う (推奨)

OpenAPI Generatorバージョン6.3.0以降では、useJakartaEeプロパティでJakarta EEパッケージを指定します。

xml
<plugin>
    <groupId>org.openapitools</groupId>
    <artifactId>openapi-generator-maven-plugin</artifactId>
    <version>6.4.0</version> <!-- バージョン6.3.0以上必須 -->
    <executions>
        <execution>
            <configuration>
                <configOptions>
                    <useJakartaEe>true</useJakartaEe>
                </configOptions>
                <!-- 他の設定 -->
            </configuration>
        </execution>
    </executions>
</plugin>
groovy
openApiGenerate {
    generatorName = "spring"
    configOptions = [
        useJakartaEe: "true"
    ]
    // 他の設定
}

方法2: useSpringBoot3 プロパティを使う

useJakartaEeが利用できない場合、useSpringBoot3プロパティが代替手段となります。

xml
<configOptions>
    <useSpringBoot3>true</useSpringBoot3>
</configOptions>
groovy
configOptions = [
    useSpringBoot3: "true"
]

プロパティの違い

どちらのプロパティもJakarta EEパッケージの使用を有効化しますが:

  • useSpringBoot3: Spring Boot 3.x固有の設定を追加
  • useJakartaEe: Jakarta EE仕様にのみ焦点を当てる

設定の検証方法

設定変更後、生成されたコードにJakarta EEパッケージが使用されていることを確認:

java
import jakarta.annotation.Generated; // javaxではなくjakarta!

@Generated(value = "Generatedコード")
public class ExampleController { ... }
プロパティの確認方法(コマンドライン)

Mavenで利用可能な設定オプションを確認:

bash
mvn clean install -DconfigHelp

出力される一覧でuseJakartaEeまたはuseSpringBoot3を探してください。

トラブルシューティング

重要: ジェネレータのバージョン確認

useJakartaEeプロパティはOpenAPI Generator 6.3.0以降で実装されました。古いバージョンでは機能しません:

bash
[ERROR] 不明な設定オプション 'useJakartaEe'

常に最新版を利用しましょう:

xml
<version>7.0.0</version> <!-- 執筆時点の最新安定版 -->

公式リリースノートで最新情報を確認してください。

参考リソース

これらの設定でOpenAPI GeneratorはSpring Boot 3.0.0+環境に適したJakarta EEパッケージを生成し、javax.*パッケージによるコンパイルエラーを解消します。