¿Cómo solicito objetivos a una lista secundaria de proyectos en Ant?
Pregunta
Tengo un montón de sub proyectos en varios directorios. Quiero especificarlos como una lista, a continuación, para un objetivo determinado quiero ir a través de cada uno, uno por uno y llame subant.
Tengo algo como:
<target name="run">
<subant target="run" failonerror="true" verbose="true">
<fileset dir="${projectA}" includes="build.xml"/>
</subant>
<subant target="run" failonerror="true" verbose="true">
<fileset dir="${projectB}" includes="build.xml"/>
</subant>
</target>
Sin embargo, tendría que especificar una línea subant separado para cada proyecto y cada conjunto de destino. Todo lo que quiero hacer es crear una propiedad que es una lista de sub-proyectos, y el uso que de alguna manera. Debe ser simple, pero ....
Solución
Se puede definir una macro para hacer esto:
<macrodef name="iterate-projects">
<attribute name="target" />
<sequential>
<subant target="@{target}">
<filelist dir="${src_dir}">
<file name="projectA/build.xml"/>
<file name="projectB/build.xml"/>
<file name="projectC/build.xml"/>
</filelist>
</subant>
</sequential>
</macrodef>
Luego de otro cualquier tarea, puede llamar a un objetivo en todas las compilaciones de forma secuencial, por ejemplo:.
<target name="clean" description="Clean all projects">
<iterate-projects target="clean"/>
</target>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow