私はSwagger(OpenAPI)を使ってAPIを設計し実装しています。私はすでに、機能的なswagger.ymlとそれに基づいてドキュメント、サーバ、クライアントを構築するMavenプロジェクトを用意しています。Mavenをコンパイルするときに重複ファイルのセットの1つのみを考慮する方法
swagger-codegen-maven-plugin
は、/target/generated-sources/swagger
ディレクトリに抽象クラスと実装クラスを生成します。実装クラスを自分で上書きするはずですから、実装クラスの初期バージョンを/src/main/java
ディレクトリに移動しました。
クラスを移動した後でビルドが正しく完了しましたが、mvn clean compile
を実行すると、ビルドに重複したクラスがあるためにエラーが発生します。
クリーンビルドを行うたびに、swagger-codegen-maven-plugin
は書き直しているクラスを含め、すべてのコードを再生成します。
swagger-codegen-maven-plugin
私は生成したくないファイルをリストするはずですが、動作していないようです(プラグインのバージョン2.2.2-SNAPSHOTを使用しています) 。回避策として
#.swagger-codegen-ignore
OrcamentoApiServiceImpl.java
PropostaApiServiceImpl.java
、私は私の変更の実装がコンパイルに使用されるようにmaven-compiler-plugin
は、ファイルの生成されたバージョンを除外するためにしようとしているが、それはどちらか動作していません。ここで私が使用している構成は次のとおりです。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<excludes>
<exclude>OrcamentoApiServiceImpl.java</exclude>
<exclude>PropostaApiServiceImpl.java</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
どのように私はmaven-compiler-plugin
が闊歩するMavenプラグインによって生成されたファイルのバージョンを無視し、唯一の鉱山を検討することができますか?
または、代替ソリューションを提案するか、swagger-codegen-maven-plugin
を.swagger-codegen-ignore
とするかどうかを教えてください。
あなたの間違いは、生成されたソースをプロジェクトのsrc/mainフォルダにコピーしていたことです。あなたはそれを掃除できますか?あなたはその間違いで生きていこうとすることで、より深い混乱に身を投じています。 javaでは、既存のクラスを単純に 'extend'してオーバーライドできます。既存のクラスを物理的に変更する必要はありません。 –
私はそれが一般的に悪い匂いだと理解していますが、swagger-codegenによって生成されたコードでそのアドバイスに従うことができるかどうかはわかりません。実際に、私はswagger-codegenをどう扱うべきかについて別の未解決の質問があります。 http://stackoverflow.com/questions/41184952/how-to-properly-use-the-server-stubs-generated-from-a-swagger-specification – lpacheco