私は、IBM RAD 7.5 で開発された Java プロジェクトをビルドするための Ant スクリプトに取り組んでいます。
an スクリプトは、IBM RAD ant 拡張 API を呼び出しています。Task を使用してプロジェクト セット ファイル (*.psf) をメモリにロードし、Task を呼び出して projectSetImport にリストされているプロジェクトをコンパイルしています。
問題は、psf ファイルにリストされているプロジェクトがプロジェクトの依存関係によって順序付けられていないことです。コンパイルすると、依存関係が正しくないために失敗します。
依存関係を自動的に管理する API またはメソッドはありますか? Iam が処理する psf ファイルは非常に大きく、各ファイルに 200 以上のプロジェクトがあり、常に変化しています (たとえば、毎週いくつかのプロジェクトが削除され、いくつかの新しいプロジェクトが追加されています)。
質問の詳細な説明は次のとおりです。プロジェクトの依存関係は次のようになります。1) プロジェクト A は B と D に依存します。2) プロジェクト B は C に依存します。3) プロジェクト E は F に依存します。
A -> B -> C
A -> D
E-> F
sample.psf ファイルには、すべてのプロジェクトがリストされているだけです。
A
B
C
D
E
F
プロジェクト リスト [A,B,C,D,E,F] を含む sample.psf をロードします。これは、A が最初にビルドするために B と D を必要とするため、A でビルドに失敗します。
私の現在の解決策は、sample.psf ファイルなど、手動で sample.psf を再構築することです。
C
B
D
A
F
E
しかし、psf ファイルには 200 以上のプロジェクトがあり、常に変化しているため、これを維持するのは困難です。
この問題に対処する 1 つの方法は、各プロジェクトの .project ファイルを読み取るパーサーを作成することです。依存プロジェクトは「projects」タグにリストされています。次に、有向非循環パス アルゴリズムを実装して、依存関係を並べ替えます。このアプローチはやり過ぎかもしれません。これは、チームが IBM Java プロジェクトを構築する際の一般的な問題に違いありません。解決策はありますか?