tomokazu-suzuki / game-openapi-generator

OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
https://openapi-generator.tech
Apache License 2.0
0 stars 0 forks source link

カスタム2 #3

Open tomokazu-suzuki opened 2 weeks ago

tomokazu-suzuki commented 2 weeks ago

1 を参考に game-api-php-symfony を作成

tomokazu-suzuki commented 2 weeks ago

docker run --rm -v ${PWD}:/local openapitools/openapi-generator-cli meta -o /local/generators/game-api-server -n game-api-server -p pro.dangerclose.gameapi.server

tomokazu-suzuki commented 2 weeks ago
docker run --rm -it -v ${PWD}/generators/game-api-server:/usr/src/mymaven -w /usr/src/mymaven maven:3.8.6-jdk-11 /bin/sh
# コンテナ内で `mvn package` コマンドを実行
mvn package
tomokazu-suzuki commented 2 weeks ago

TestUtilはcoreパッケージにはいっていないのでエラーが出ているものと思われる。openapi-generatorではなく、openapi-generator を使わないといけないようだ。

質問1

mvnのopenapigeneratorはcoreパッケージっぽいのですが、それは関係ありますか? https://github.com/OpenAPITools/openapi-generator/blob/v7.7.0/modules/openapi-generator/src/test/java/org/openapitools/codegen/TestUtils.java をつかいたいですが、coreパッケージは https://github.com/OpenAPITools/openapi-generator/tree/v7.7.0/modules/openapi-generator-core/src/main/java/org/openapitools/codegen をみてもないことがわかります。

回答1

openapi-generator-coreopenapi-generator の関係について理解することは重要です。以下にそれぞれの違いと関連性について説明します。

openapi-generator-coreopenapi-generator

  1. openapi-generator-core

    • 役割:OpenAPI Generator のコア機能を提供します。コード生成の基盤となるライブラリです。
    • 含まれる機能:コード生成のための基本的なロジックや設定機能が含まれていますが、具体的なジェネレーターの実装やCLIのコードは含まれていません。
  2. openapi-generator

    • 役割:CLI ツールや、具体的なコード生成の実装を含みます。openapi-generator-core を利用して実際のコード生成を行うためのツールや実装が含まれます。
    • 含まれる機能:CLI、各種コード生成用テンプレート、プラグインなどが含まれています。

TestUtils クラスの利用について

openapi-generatoropenapi-generator-core の使い分け

具体的な対応策

もし openapi-generator モジュールのクラスパスに含まれていない場合、そのクラスパスを正しく指定することが重要です。

質問2

TestUtils を使用したい場合:openapi-generator モジュールをビルドして、そのテストやユーティリティクラスにアクセスする必要があります。具体的には、openapi-generator モジュールを含めたクラスパスでテストを実行する必要があります。 の方法を教えて下さい。

回答2

TestUtils クラスを利用するために、openapi-generator モジュールをビルドして、そのテストやユーティリティクラスにアクセスする方法を以下に示します。

手順概要

  1. openapi-generator モジュールをビルドする
    openapi-generator モジュールをビルドして、その JAR ファイルを生成します。これにより、テストやユーティリティクラスが含まれる JAR ファイルが作成されます。

  2. ビルドした JAR をクラスパスに追加する
    ビルドした JAR ファイルをクラスパスに追加して、TestUtils クラスを利用できるようにします。

1. openapi-generator モジュールのビルド

以下のコマンドを実行して、openapi-generator モジュールをビルドします。これにより、必要なクラスファイルが含まれる JAR ファイルが生成されます。

cd /path/to/openapi-generator
mvn clean install -pl modules/openapi-generator -am

このコマンドは、openapi-generator モジュールとその依存関係をビルドします。ビルドが成功すると、target ディレクトリ内に JAR ファイルが生成されます。具体的には、modules/openapi-generator/target/openapi-generator.jar というファイルが作成されるはずです。

2. ビルドした JAR をクラスパスに追加する

次に、ビルドした JAR ファイルをクラスパスに追加して、TestUtils クラスを利用できるようにします。これを行うためには、以下のように Java コマンドを実行します。

java -cp "path/to/your/other/dependencies/*:path/to/openapi-generator/target/openapi-generator.jar" org.your.package.YourTestClass

このコマンドでは、以下のことを行います:

3. Maven プロジェクトでの設定

もし Maven プロジェクト内で TestUtils を利用する場合、pom.xml にビルドした JAR を依存関係として追加することもできます。以下のように、ビルドした JAR をプロジェクトのローカルリポジトリにインストールし、pom.xml に依存関係を追加します。

mvn install:install-file -Dfile=path/to/openapi-generator/target/openapi-generator.jar -DgroupId=org.openapitools -DartifactId=openapi-generator -Dversion=7.7.0 -Dpackaging=jar

pom.xml に以下のように依存関係を追加します。

<dependency>
    <groupId>org.openapitools</groupId>
    <artifactId>openapi-generator</artifactId>
    <version>7.7.0</version>
    <scope>test</scope>
</dependency>

この設定を行うことで、openapi-generator モジュール内のクラスにアクセスできるようになります。

質問3

pom.xmlのscopeはtestにされていますよね?それ以外はopenapi-generatorのcoreパッケージをつかいたいのですが、それはどうしたらいいですか?

回答3

openapi-generator モジュールの TestUtils などのユーティリティクラスを使用するために scopetest に設定するのは、主にテストコードにおける依存関係を管理するためです。openapi-generator の core パッケージを実際のコードで使用する場合は、以下の手順で設定できます。

Core パッケージを依存関係として追加する

openapi-generator の core 機能を使用するためには、openapi-generator-core パッケージを依存関係として追加する必要があります。core モジュールは、openapi-generator の中核的な機能を提供します。これを pom.xml に追加することで、core 機能を利用できます。

1. pom.xmlopenapi-generator-core を追加

以下のように pom.xmlopenapi-generator-core を依存関係として追加します。

<dependencies>
    <!-- OpenAPI Generator Core -->
    <dependency>
        <groupId>org.openapitools</groupId>
        <artifactId>openapi-generator-core</artifactId>
        <version>7.7.0</version>
        <scope>compile</scope>
    </dependency>

    <!-- Test Utilities (if needed for testing) -->
    <dependency>
        <groupId>org.openapitools</groupId>
        <artifactId>openapi-generator</artifactId>
        <version>7.7.0</version>
        <scope>test</scope>
    </dependency>
</dependencies>

2. openapi-generator モジュールのビルド

openapi-generator モジュールが core 機能を含んでいる場合、そのモジュールをビルドしておくことも必要です。以下のコマンドでビルドします。

cd /path/to/openapi-generator
mvn clean install -pl modules/openapi-generator-core -am

これにより、openapi-generator-core モジュールがローカル Maven リポジトリにインストールされ、compile スコープで利用可能になります。

ビルドとクラスパスの確認

ビルドが成功し、openapi-generator-core が正しく依存関係に追加されているか確認するために、以下のコマンドを使用してクラスパスを確認できます。

mvn dependency:tree | grep 'org.openapitools:openapi-generator-core'

結論

これにより、openapi-generator の core 機能やユーティリティクラスを適切に利用できるようになります。

tomokazu-suzuki commented 1 week ago
docker run --rm -v "${PWD}:/local" game-openapi-generator-cli generate -i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml -g game-api-server -o /local/out/