9

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

如果设置了属性,则调用 antcall 目标。这是可行的吗?有人能告诉我怎么做吗?

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

3 回答 3

8

像这样的东西应该工作:

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

如果 then 条件需要ant-contrib,那么在 ant 中任何有用的东西也是如此。

于 2012-06-27T17:45:01.623 回答
6

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

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

您可以进一步扩展它以检查是否应该在调用此目标之前通过使用来设置 some.property,因为在评估 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 将被跳过。

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

于 2013-12-10T22:28:51.403 回答
-1

还请考虑您可以出于以下目的调用 groovy:

<use-groovy/>
<groovy>
   if (Boolean.valueOf(properties["some.property"])) {
     ant.project.executeTarget("do.something")
   }
</groovy>
于 2013-05-14T16:07:06.573 回答