Может ли цель Ant зависеть от завершения одной из своих зависимостей, но не от обеих?

Я пытаюсь создать цель Ant, которая запускается, если выполняется ОДНА из двух других целей. По сути, предполагая, что у меня есть три цели A1, A2 и B, я хочу, чтобы B выполнялась только в том случае, если выполняются A1 ИЛИ A2. A1 и A2 зависят от условия, поэтому будет работать либо A1, либо A2 (но никогда оба).

Например:

<target name="A1" if="${conditionalVar}"> 
<target name="A2" unless="${conditionalVar}">
<target name="B" depends="????????">

Какими должны быть «зависимости» для цели B? Есть какой-либо способ сделать это?


person pghprogrammer4    schedule 21.12.2011    source источник


Ответы (1)


Да, такая конфигурация возможна и не очень сложна:

Хитрость заключается в том, чтобы установить свойство, которое будет проверено, если установлено (например, назовите его «taskA1.use»).

<target name="A1" if="taskA1.use" />
<target name="A2" unless="taskA1.use" />
<target name="B" depends="A1,A2" />

Следовательно, даже если B зависит от обеих задач A1 и A2, будет выполнена только одна из них, в зависимости от того, установлено свойство «taskA1.use» или нет.

person Robert    schedule 21.12.2011
comment
Но B зависит как от A1, так и от A2, поэтому не должны ли оба запускаться, чтобы произошло B? Или A2 будет считаться запущенным, даже если задано задание taskA1.use и, следовательно, A2 не запустит весь свой код? - person pghprogrammer4; 21.12.2011
comment
Условие оценивается перед запуском цели. Таким образом, если taskA1.use не установлен, то A1 не будет выполняться и не будет считаться запущенным. - person barfuin; 22.12.2011
comment
Вызываются обе цели A1, A2, фактически выполняется только одна из-за условий свойств. - person Mark O'Connor; 22.12.2011