2011-04-14 10 views
3

数日前にantで作業を開始しました。今、私は各プロジェクトのbuild.xmlを呼び出す一般的なbuildall.xmlを持っています。いくつかのプロジェクトは互いに依存しているので、それに依存する他のプロジェクトを再構築する必要があります。これは問題ではありません - 私はターゲットのdependsプロパティを設定するだけです。しかし、ファイルが変更されていなくても、antは常に依存関係を構築しています。依存関係が更新されたときにのみ構築するAntビルドスクリプトの作成

project1には依存性がありません。 project2はproject1に依存します。 project3はproject1,2に依存します。 project4はproject1,2,3に依存します。等々。

私はプロジェクトKを見て、プロジェクト1 ..プロジェクトKがuptodateを使ってファイルを更新したかどうかを調べるソリューションをハックすることができました。そうであれば、ターゲットを実行します。これは厄介であり、不要に見えます。

これを実装する最もクリーンな方法は何ですか?

EDIT:だから、たくさんのターゲットをハックすることにしました。 "check_projectK"は、すべてのソースファイル、ビルドファイル、および1のビルドファイルを確認します。プロジェクト。依存関係のため、これは常に正しく処理されます。しかし、これはまだ大きなワークスペースのコピーアンドペーストの大量です。私はこれを開いたままにします。

答えて

1

バージョンコントロールシステムに接続して何か変更があったかどうかを確認する(ソースコントロールを使用していますか?)ことを確認しない限り、ANTはできません。 Antは、ファイルが最後に変更されたときを知りません。そして、それがビルドされたものと一致するかどうかを確認します。それは依存性リポジトリの概念を持たない。 Antの全目的は、だけがを構築することです。

あなたの問題に対する解決策はAntではなく、Mavenです。 Mavenは依存性リポジトリを持っています。また、フレックスに具体的に使用されているMaven用の非常に気の利いたプラグインはFlexMojosと呼ばれています。これを使うことで、Mavenはリポジトリにアップロードされたために何かが最後にビルドされた時を知ることができます。その後、他のプロジェクトでは依存関係を追加し、必要なSWCをダウンロードできます。

さらに、Hudson、Bamboo、Teamcityのような継続的な統合エンジンと組み合わせて、ファイルがソース管理システムにコミットされるたびにプロジェクトをビルドし、自動的にすべての依存プロジェクトを更新します。

+0

これは私が思ったことです - ANTはそれを行うことはできません。私はMavenを調べますが、これは動作するのでANTに固執しています(ビルドファイルはハッキングを使ってハッキングされたハックです)。ほとんどの開発者はEclipse用FlashBuilder 4プラグインを使用していますが、ANTで動作するコマンドラインビルドスクリプトが必要な人もいます。答えをありがとう。 – Kizaru

+0

あなたは間違いなくMavenを使いたいと思います。私はあなたがそれを聞いていないことに驚いています。これはエンタープライズ全体で使用されています。 FlexMojosでは、pomファイル(build.xmlのmavenに相当)のすべての依存関係を取り、Flash Builderに必要な適切なプロジェクトファイルを作成する非常にクールなスクリプトもあります(コマンドは 'mvn flexmojos:flashbuilder'です) 。それは非常に生産的です:) –