Ant の target に指定する depends 属性の挙動

Ant の target に指定する depends 属性の挙動について。

ターゲットの指定順

ターゲットは指定した順番で実行される。以下の場合、-c -b -a の順に実行される。

<project>
    <target name="main" depends="-c,-b,-a">
        <echo message="main done."/>
    </target>
    <target name="-a">
        <echo message="-a done."/>
    </target>
    <target name="-b">
        <echo message="-b done."/>
    </target>
    <target name="-c">
        <echo message="-c done."/>
    </target>
</project>
同じターゲットを複数指定した場合

ターゲットは1回だけ実行される。以下の場合、-a が3回実行されるわけではない。

<project>
    <target name="main" depends="-a,-a,-a">
        <echo message="main done."/>
    </target>
    <target name="-a">
        <echo message="-a done."/>
    </target>
    <target name="-b">
        <echo message="-b done."/>
    </target>
    <target name="-c">
        <echo message="-c done."/>
    </target>
</project>
同じターゲットに依存するターゲット同士を指定した場合

最初のターゲットが実行されるときのみ、依存するターゲットが実行される。以下の場合、-b の前に -a が実行されるが、-c の前に -a が再度実行されるわけではない。

<project>
    <target name="main" depends="-b,-c">
        <echo message="main done."/>
    </target>
    <target name="-a">
        <echo message="-a done."/>
    </target>
    <target name="-b" depends="-a">
        <echo message="-b done."/>
    </target>
    <target name="-c" depends="-a">
        <echo message="-c done."/>
    </target>
</project>