Как применить цели к подсписку проектов в Ant? - PullRequest
3 голосов
/ 22 апреля 2009

У меня есть куча подпроектов в разных каталогах. Я хочу указать их в виде списка, затем для заданной цели я хочу просмотреть каждую из них, одну за другой, и вызвать субант

У меня есть что-то вроде:

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

Но мне нужно было бы указать отдельную вспомогательную строку для каждого проекта и каждого целевого набора. Все, что я хочу сделать, это создать свойство, которое представляет собой список подпроектов, и использовать его каким-либо образом. Это должно быть просто, но ....

1 Ответ

5 голосов
/ 22 апреля 2009

Вы можете определить макрос для этого:

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

Затем из любой другой задачи вы можете вызывать цель для всех сборок по порядку, например ::10000

<target name="clean" description="Clean all projects">
   <iterate-projects target="clean"/>
</target>
...