在Ant中,我可以在目标的“依赖”中使用属性吗?

时间:2009-09-15 16:25:09

标签: ant

我试图用Ant做这个:

<property name="test" value="123"/>
<target name="helloworld" depends="${test}"/>

但我收到错误“此项目中不存在Target $ {test}。”

所以我猜我能做到这一点?

2 个答案:

答案 0 :(得分:7)

您可以使用AntCall Task在另一个任务中调用任务。

<project>
    <target name="asdf">
        <property name="prop" value="qwer" />
        <antcall target="${prop}" />
    </target>

    <target name="qwer">
        <echo message="in qwer" />
    </target>
</project>

要使一个人依赖另一个,您可以在从属任务中设置一个参数,并在您的调用任务中进行检查。

答案 1 :(得分:3)

您可以使用if属性检查属性,而不是依赖。有关详细信息,请参阅manual

例如:

<target name="helloworld" if="test"/>

请注意,这仅检查属性是否已设置(您可以使用unless检查是否已设置)。

另一种更复杂但更强大的方法是在依赖目标上使用嵌套条件:

<target name="helloworld" depends="myTarget.check" if="myTarget.run">
    ...
</target>

<target name="myTarget.check">
  <condition property="test">
    <and>
      <available file="foo.txt"/>
      <available file="bar.txt"/>
    </and>
</condition>