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 ....

¿Fue útil?

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
scroll top