antcall基于条件

时间:2012-06-27 17:27:17

标签: ant build build-automation

这就是我想要实现的目标:

如果设置了属性,则调用antcall target。这可行吗?谁能告诉我怎么样?

<condition>
    <isset property="some.property">
        <antcall target="do.something">
    </isset>
</condition>

3 个答案:

答案 0 :(得分:7)

这样的事情应该有效:

<if>
    <isset property="some.property"/>
    <then>
        <antcall target="do.something">
    </then>
</if>

如果那时条件需要ant-contrib,那么蚂蚁中有用的东西也是如此。

答案 1 :(得分:6)

我知道我已经迟到了但是如果你使用的是ant-contrib,如果不支持嵌套的antcall元素(我使用的是antcontrib 1.02b,那么这里是另一种方法) )。

<target name="TaskUnderRightCondition" if="some.property">
  ...
</target>

您可以进一步扩展它以检查是否应该在调用此目标之前设置some.property使用depends becuase depends在if属性被计算之前执行。因此你可以这样:

<target name="TestSomeValue">
  <condition property="some.property">
    <equals arg1="${someval}" arg2="${someOtherVal}" />
  </condition>
</target>

<target name="TaskUnderRightCondition" if="some.property" depends="TestSomeValue">
  ...
</target>

在这种情况下调用TestSomeValue,如果someval == someOtherVal,则设置some.property,最后,将执行TaskUnderRightCondition。如果someval!= someOtherVal则会跳过TaskUnderRightCondition。

您可以通过the documentation了解有关条件的更多信息。

答案 2 :(得分:-1)

考虑一下你也可以为这些目的调用groovy:

<use-groovy/>
<groovy>
   if (Boolean.valueOf(properties["some.property"])) {
     ant.project.executeTarget("do.something")
   }
</groovy>