自動生成されたコードを配置するのに適した場所はありますか?
-
09-09-2019 - |
質問
自動生成されたクラスが多数ありますが、そのほとんどが Axis2 スタブ、スケルトンなどです。一部の複雑な wsdl の場合、Axis2 は大量の Java Beans、スタブなどを生成します。また、自動生成が使用される場合は他にもあると思います。
今のところ、これらをコードベースの他のファーストクラスのメンバーとして扱い、同じパッケージに保存します。
ただし、リファクタリングやクリーンアップなどを行う場合、これらの自動生成クラスからの警告を取り除くのは困難になります。たとえば、Java1.5 ジェネリックスを使用するためにコードをクリーンアップしようとしている場合、問題となるクラスのうちのいくつが私たちのもので、自動生成されているかを知る良い方法はありません。
これらの自動生成された部分を別のパッケージに分離する必要がありますか?皆さんはそのようなアーティファクトをリポジトリにどのように保存していますか?
編集:以下のかなりの数の回答に「ビルドプロセス中に生成」という記述があります。そうすることの利点はわかりますが、リポジトリのチェックインを回避する方法がよくわかりません。
私のコードにはこれらのクラスの一部にコンパイル時の依存関係があり、私にとって開発中のビルドは Eclipse の「ctrl-s」です。コンパイルの生成、テストの実行、成果物の生成には、ant スクリプトを使用します。
解決
あなたは、同じパッケージを保つが、我々は何をすべきかで異なるソースフォルダ(生成-srcのようなもの)を、使用することができます。私は、ソースコードリポジトリで生成されたコードを保存するの全体的なアイデアについての塀の上に実際です。私たちは、プロジェクトの他の開発者のための便利なようにそれを行うが、それは通常、ビルドプロセスの一部として、ソースコードを再生成することは理にかなって。これは、コードが変更することはほとんどありません生成された場合は、別のプロジェクトを使用してjarファイルを生成することは、より実用的かもしれません。
他のヒント
ベストプラクティスの概要:
- 再現可能にする
- ビルド プロセスの一部として生成されたコードを作成します。
- 生成されたコードをソース管理にチェックインしないでください。(ソースを確認してください。例えばWSDL)
- 生成されたコードをマネージド コードから分離してください
- 生成された出力には別のソース フォルダーを使用します。
- この生成されたコードが依存関係になるように、別の .jar を配布します。
- 別の IDE プロジェクト (または Maven モジュール) の使用を検討してください。
私は自分自身のプロジェクトにこれらのファイルを置きます。この方法では、私は1つの場所で、など私は必要なすべてのパッチを、ビルドファイルを追加し、生成されたコードのためのすべての警告をオフにすることができます。
あなたのソース管理システムにそれらをチェックしている場合は、のないの。彼らはビルドステップにより再生成され得ることを確認します。それらはWSDLから生成されます場合は、WSDL、ない結果のコードで確認してください。
私はちょうどメンテナが自動生成されたソースを手動で編集しようとすることを可能な限り低くするために、そのビルドステップは、生成されたコードのための完全に別の.jarを生成した、その後、ソースファイルを削除するお勧めします。
そうすれば、あなたのリファクタリングの活動を操作する代わりに、ソースのサードパーティのライブラリーなどの自動生成されたコードが表示されます。
生成された成果物のセットごとに、その後、JARおよびソースZIPファイルにアップアーティファクトをバンドルし、世代を行い、新しいプロジェクトを作成し、あなたのアプリからそれらを参照。物事は素晴らしく、別々続け、生成されたアーティファクトは、IDEによって変化するためではないという事実を強調しています。
Mavenとaxistools-mavenの-プラグインで、生成されたソースは、「ターゲット」ディレクトリ内の別のソースフォルダに場所です。 Mavenのは、すべてのファイルとのものを生成ところ、このターゲット・ディレクトリがあるので、それを洗浄することができます。
生成されたファイルも、IDE内の異なるソースフォルダに表示されますので、これは非常に、convinienedされます。