【问题标题】:How do I apply targets to a sublist of projects in Ant?如何将目标应用于 Ant 中的项目子列表?
【发布时间】:2009-04-21 21:09:44
【问题描述】:

我在各个目录中有一堆子项目。我想将它们指定为一个列表,然后对于给定的目标,我想逐个遍历每个目标并调用 subant。

我有类似的东西:

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

但我必须为每个项目和每个目标集指定一个单独的子行。我要做的就是创建一个作为子项目列表的属性,并以某种方式使用它。它应该很简单,但是....

【问题讨论】:

    标签: list ant path fileset


    【解决方案1】:

    您可以定义一个宏来执行此操作:

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

    然后从另一个任何任务中,您可以按顺序在所有构建上调用目标,例如:

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

    【讨论】:

    • 很好,当我将 src_dir 设置为 .. 时效果很好(我的 buildAll 项目与其他项目处于同一级别)。
    猜你喜欢
    • 2022-09-23
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多