2015-06-12 2 views
0

У меня есть следующее Ant цели в моем project.xml:Запуск Ant цели при определенных условиях

<target name="to.run.under.conditions"> 
</target> 

<target name="deploy1"> 
    <antcall target="deploy2"/> 
</target> 

<target name="deploy2"> 
    <antcall target="to.run.under.conditions"/> 
</target> 

<target name="another.target"> 
    <antcall target="deploy1"/> 
</target> 

Моя цель, чтобы иметь возможность исключить цель to.run.under.conditions при запуске another.target. Я не очень хорошо знаком с ANT, и я изо всех сил пытаюсь понять, как подойти к этой проблеме. Я попытался использовать unless="${target.running}" в и установить свойство как true в задаче состояния внутри target name ="target.running"

Помогите с этим?

Спасибо за вашу помощь,

I.

---- ИЗМЕНИТЬ ОБНОВЛЕНО РЕШЕНИЕ ----

Это моя текущая попытка (я использую ANT 1.8.2):

<target name="to.run.under.conditions" if="${target.running}"> 
</target> 

<target name="another.target"> 
<property name="target.running" value="false"/> 
</target> 

Если я не ошибаюсь, так как свойство имеет значение ложь внутри another.target, то to.run.under.conditions не должен работать (я могу ошибаться, хотя). Имеет ли это смысл? Любые комментарии очень ценятся!

ответ

0

Я закончил с этим решением, которое, кажется, работают, как ожидался:

<target name="deploy2"> 
    <if> 
     <equals arg1="${target.running}" arg2="true" /> 
     <then> 
      <echo message="the target will not run" /> 
     </then> 
     <else> 
      <echo message="the target will run" /> 
       <antcall target="to.run.under.conditions"/> 
     </else> 
    </if> 
    </target> 

    <target name="to.run.under.conditions"> 
    </target> 

    <target name="another.target"> 
    <property name="target.running" value="true"/> 
    </target> 

Надеется, что это помогает,

I.

0

Попробуйте это:

<target name="build-module-A" if="module-A-present"/> 
<target name="build-own-fake-module-A" unless="module-A-present"/> 

В первом примере, если свойство модуля-А-настоящее время установлено (любое значение, например, ложное), цель будет запущена. Во втором примере, если свойство module-A-present установлено (опять же, для любого значения), цель не будет запущена.

Для получения дополнительной информации см. Any Targets.

+0

@MJG, спасибо за Ваш ответ. Не могли бы вы поставить это в контексте моей проблемы? Это происходит непосредственно из https://ant.apache.org/manual/targets.html, и я не уверен, как это применимо к моему примеру. – paranza