subantタスクを使用することをお勧めします
<project name="Subant demo" default="deploy-everything">
<target name="deploy-everything">
<subant>
<fileset dir="." includes="**/build.xml" excludes="build.xml"/>
<target name="clean"/>
<target name="deploy"/>
</subant>
</target>
</project>
これにより、すべての「build.xml」ファイルが検索され、それぞれで「cleandeploy」ターゲットが呼び出されます。
サブフォルダーのビルドを自動的に取得するのは良いことですが、ビルドが互いに独立していない限り、大規模なプロジェクトで機能することはめったにありません(ビルドの順序が重要です)。
次の例では、順序付けされていないファイルセットではなく、明示的なファイルリストを使用しています。
<project name="Subant demo" default="deploy-everything">
<target name="deploy-everything">
<subant>
<filelist dir=".">
<file name="Folder1/SubFolder1/build.xml"/>
<file name="Folder1/SubFolder2/build.xml"/>
..
</filelist>
<target name="clean"/>
<target name="build"/>
</subant>
</target>
</project>
最後に、最も高度なソリューションは、ivyなどの依存関係マネージャーを使用して、各モジュールの依存関係を「ivy.xml」ファイルで宣言することです。適切にセットアップすると、各サブモジュールのビルドがよりスタンドアロンになります。ビルドの「すべてが問題になる」を解決するために、ivyは正しいビルド順序を自動的に決定できるビルドリストタスクを提供します。
<target name="deploy-everything">
<ivy:buildlist reference="build-path">
<fileset dir="." includes="**/build.xml" excludes="build.xml"/>
</ivy:buildlist>
<subant buildpathref="build-path">
<target name="clean"/>
<target name="build"/>
</subant>
</target>