4

最近、複数の異なるプロジェクトを使用しているプロジェクトに参加しました。これらのプロジェクトの多くは、ライブラリに含まれる他のプロジェクトの JAR ファイルを使用して相互に依存しているため、1 つのプロジェクトを変更するたびに、他のどのプロジェクトがそれを使用しているかを知り、それらも更新する必要があります。私はこれをもっと簡単にしたいと思っており、このすべての Java コードを別のパッケージの 1 つのプロジェクトにマージすることを考えていました。これを行ってから、一部のパッケージのみを jar にデプロイすることは可能ですか。一部のみの展開はしたくないのですが、可能であればお邪魔させていただきました。

これを処理するより良い方法はありますか?

4

5 に答える 5

4

アプローチ 1: Hudson を使用する

Hudsonなどの継続的インテグレーション サーバーを使用する場合は、アップストリーム/ダウンストリーム プロジェクトを構成できます (用語を参照)。

プロジェクトは、1 つまたは複数のダウンストリーム プロジェクトを持つことができます。現在のプロジェクトが正常にビルドされると、ダウンストリーム プロジェクトがビルド キューに追加されます。現在のプロジェクトが不安定な場合でも、下流のプロジェクトを呼び出しキューに追加するように設定することができます (デフォルトはオフ)。

これが意味することは、誰かがコードを 1 つのプロジェクトにチェックインした場合、少なくとも他のビルドが壊れた場合に早期に警​​告が表示されるということです。

アプローチ 2: Maven を使用する

プロジェクトがそれほど複雑でない場合は、おそらくメイン プロジェクトを作成し、これらのサブプロジェクトをこのプロジェクトの子モジュールにすることができます。ただし、Maven が好む形式にプロジェクトをマングリングするのは非常に難しい場合があります。

于 2009-03-04T12:46:30.677 に答える
3

Eclipse (または適切な IDE) を使用している場合は、1 つのプロジェクトを別のプロジェクトに依存させ、SVN でその構成の側面を提供し、ビルド スクリプトでチェックアウトを想定することができます。

あるプロジェクトが別のプロジェクトの特定のバージョンに依存している場合、Jar ファイルはこれを管理するためのはるかに簡単な方法であることに注意してください。主要なリファクタリングは、すぐに他のすべてのプロジェクトで問題を修正するために多くの作業を行うことを意味する可能性がありますが、必要に応じて新しい jar を各プロジェクトにドロップし、移行作業を行うことができます。

于 2009-03-04T12:43:12.383 に答える
2

おそらくすべて特定のプロジェクトに依存すると思いますが、私はすべてのプロジェクトを分けておくと思います。これにより、システム全体を疎結合に保つことができます。プロジェクト間のすべての依存関係を管理するために、 mavenなどのツールを使用できます。このような依存関係の管理は、maven の主な強みの 1 つです。

于 2009-03-04T12:47:06.027 に答える
1

Ant をビルド ツールとして使用すると、プロジェクトを任意の方法でパッケージ化できます。ただし、コードの一部をディストリビューションから除外すると、エラーが発生しやすくなります。必要なクラスを誤って除外する可能性があります (おそらく、すべてのクラスが必要です)。

コードを別のプロジェクトに保持することに関して、大まかなガイドラインがあります。一緒に変更するコードを同じプロジェクトに保持し、独自の jar ファイルにパッケージ化します。これは、コードの一部を、メイン アプリケーションよりも頻繁に変更されないユーティリティ ライブラリに分割できる場合に最適です。

たとえば、(Axis ライブラリなどを使用して) Web サービス WSDL から Web サービス クライアント クラスを生成したアプリケーションがあるとします。Web サービス インターフェイスは頻繁には変更されない可能性が高いため、メイン アプリケーションのビルドで常に再生成ステップが繰り返されることは望ましくありません。WSDL が変更されたときに Web サービス クライアント クラスを再作成するだけで済むように、この部分用に別のプロジェクトを作成します。別の jar を作成し、メイン アプリケーションで使用します。このスタイルにより、他のプロジェクトでこれらのユーティリティ モジュールを再利用することもできます。

このスタイルに従う場合、jar マニフェストにバージョン番号を配置して、どのアプリケーションがどのバージョンのモジュールを使用しているかを追跡できるようにする必要があります。これをどこまで実行したいかによっては、各リビジョンで発生した変更の詳細を示すテキスト ファイルを jar に保持することもできます (オープン ソース ライブラリのように)。

于 2009-03-04T13:17:10.087 に答える
0

それはすべて可能です(数年前に同じ状況がありました)。それがどれほど難しいか、または簡単かは、IDE (リファクタリング、マージ、新しいプロジェクトの編成) とビルドするツール (デプロイ) によって異なります。IDE として IDEA、ビルド ツールとして Ant を使用しましたが、それほど難しくはありませんでした。ある日曜日 (誰も働いていない + コミットしている)、1 台のコンピューターで 2 人。

私はあなたが何を意味するのか分かりません

「jar 内の一部のパッケージのみをデプロイする」

実行時にそれらすべてが必要になると思いますよね?私が理解したように、それらは互いに依存しています。

于 2009-03-04T12:45:42.300 に答える