ある Java プロジェクトからいくつかのクラスとパッケージを抽出し、それらを別のプロジェクト (配布可能な jar を持つ) に配置するつもりです。それほど難しいことではありませんが、もちろん、このような大規模なリファクタリングには結果が伴います。つまり、元のプロジェクトには、抽出したいクラスのサブクラスである多くのクラスがあります。この種のリファクタリングに取り組むための最良の方法は何ですか?
2 に答える
だから基本的にこれは私がしたことです:
新しいプロジェクトを作成する
古いプロジェクトから新しいプロジェクトの新しいパッケージに適切なクラスをコピーし、すべてがビルドされるまで再構成します
そのプロジェクトを個別にテストし、jarにビルドします
依存関係としてjarを追加します
元のプロジェクトからクラスを削除します
すべてのインポートを古いパッケージから新しいパッケージに手動で変更します
私が本当に探していたのは、ステップ6を自動化または合理化して、何も壊れていないことを確認する方法でしたが、大量の検索/置換以外に存在するかどうかはわかりません。
個別のプロジェクトを作成すると、メイン プロジェクトはこれらすべてのプロジェクトの依存関係を持つことになります。そのため、IDE でソース コードを簡単にナビゲートできます。
アプリケーションをビルドするときに、各依存関係を に組み込むことができjar
、メイン アプリケーションはクラスパス内のすべての依存関係 jar にバンドルされます。
プラグインを使用する Web アプリと、common-plugins という名前のプロジェクトに保存されている共通のクラス、ユーティリティなどを使用するプラグインを例にとります。
project/webapp: having dependency on plugin1, plugin2 and common-plugin
project/plugin1: having dependency on common-plugins
project/plugin2: having dependency on common-plugins
project/common-plugins: having no dependencies
プロジェクトをビルドするときに、プラグインと共通プラグインを jar にビルドして、Web アプリにバンドルすることができます
project/webapp.war/WEB-INF/lib/plugin1.jar
project/webapp.war/WEB-INF/lib/plugin2.jar
project/webapp.war/WEB-INF/lib/common-plugins.jar
IDE でこのように、たとえば eclipse を使用します。上記のように、依存関係を持つ 4 つのプロジェクトを持つワークスペースがあります。maven、ant、ivy、または必要なものを使用してビルドする場合、webapp プロジェクトが依存する 3 つのプロジェクトをビルドしてから、全体をバンドルします。