我建议使用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”文件并在每个文件上调用“干净部署”目标。
虽然自动拾取子文件夹构建很整洁,但它很少在大型项目中工作,除非构建彼此独立(构建顺序很重要)。
以下示例使用显式文件列表,而不是无序的文件集:
<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>