9

swagger-codegen maven プラグインを使用して API 用の JAX-RS サーバー スタブを生成したいのですが、生成されたものではなく、独自のサービス実装クラスを使用したいと考えています。このクラス以外のすべてを生成する方法はありますか? 私の API では、ツールは ProfilesApi、ProfilesApiService、ProfilesApiServiceFactory、および ProfilesApiServiceImpl の 4 つの API クラスを生成します。

私の現在のmaven構成:

                     <configuration>
                        <inputSpec>src/main/resources/Profile.json</inputSpec>
                         <language>jaxrs</language>
                        <configOptions>
                            <dateLibrary>java8</dateLibrary>
                        </configOptions>
                        <models>Profile,PageInformation,ProfileResult</models>
                        <modelPackage>com.myApp.profile-api-model</modelPackage>
                        <apiPackage>com.myApp.profile-api-webapp</apiPackage>
                        <library>jersey2</library>
                        <environmentVariables>
                            <!-- change default client library (here until plugin 2.1.5). Doesn't seem to work! -->
                            <library>jersey2</library>
                            <!-- generate all models -->
                            <models></models>
                            <!-- generate all APIs -->
                            <apis></apis>
                            <!-- generate just the supporting files that are Java source code (not project build files) -->
                            <supportingFiles>ApiException.java,ApiOriginFilter.java,ApiResponseMessage.java,JacksonJsonProvider.java,LocalDateProvider.java,LocalDateTimeProvider.java,NotFoundException.java,StringUtil.java,web.xml,ProfilesApi.java,ProfilesApiService.java,ProfilesApiServiceFactory.java</supportingFiles>
                        </environmentVariables>
                    </configuration>
4

3 に答える 3

14

これを行う適切な方法は<generateSupportingFiles>、構成と の2 つの構成オプションを使用<interfaceOnly>すること<configOptions>です。は<generateSupportingFiles>実行可能なエントリ ポイントpom.xmlなどを<interfaceOnly>生成しませんが、フラグはサービスの実装を生成せず、インターフェイスのみを生成します。このようにして、独自の実行可能クラスで他の処理、独自pom.xmlおよび独自のサービス実装を行うことができ、mvn clean package.

Jersey テンプレートが をチェックするかどうかはわかりません<interfaceOnlyが、Spring Boot および CXF JAX-RS テンプレートはチェックします。

あなたの mavenpom.xmlでは<configuration>、ビルド プラグインの内部は次のswagger-codegen-maven-pluginようにする必要があります。

<generateSupportingFiles>false</generateSupportingFiles>
<configOptions>
    <interfaceOnly>true</interfaceOnly>
...
</configOptions>

残念ながら、これらの構成オプションは十分に文書化されていないため、多くの調査を行い、いくつかの github の問題でそれらに出くわす必要があります。

于 2018-02-13T19:35:55.723 に答える
-1

ここでの解決には 2 つのステップがあります。

  1. **/*Controller.java または **/*Impl.java を .swagger-codegen-ignore ファイル (ターゲット/生成されたソース内) に追加します。使用する言語に応じて、デフォルトの実装が *Controller.java または *Impl.java ファイルで提供されます。デフォルトの実装が生成から除外されると、生成されたインターフェースを独自のクラスに実装できます。独自のクラスのコードは、mvn clean では更新されません。

  2. swagger-codegen-ignore ファイル自体は自動生成されたファイルであるため、ステップ 1 で追加したものはすべて、mvn clean を実行すると更新されます。これを回避するには、以下のプラグインを pom に追加します。

    <plugin>                
    <artifactId>maven-clean-plugin</artifactId>
    <version>2.6.1</version>
    <configuration>
    <excludeDefaultDirectories>true</excludeDefaultDirectories>
    <filesets>
    <fileset>
    <directory>${project.build.directory}</directory>
    <excludes>
    <exclude>generated-sources/.swagger-codegen-ignore</exclude>
    </excludes>
    </fileset>
    </filesets>
    </configuration>
    </plugin>
    
于 2017-01-22T07:20:31.903 に答える
-2

実装クラスの生成を防ぐには、codegen 無視ファイルを使用する必要があります。

于 2016-12-23T21:29:28.947 に答える