2009-09-15 3 views
5

Я пытаюсь сделать это с помощью Ant:В Ant, могу ли я использовать свойство внутри цели «зависит»?

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

Но я получаю сообщение об ошибке «Target $ {испытание} не существует в этом проекте.»

Так что я предполагаю, что смогу это сделать?

ответ

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> 

Чтобы сделать выбор зависеть от другого, вы можете установить параметр в зависимой задаче и проверить его в своей вызывающей задаче.

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> 

Смежные вопросы