Как вызвать какую-либо цель Ant, только если не установлена ​​переменная окружения? - PullRequest
7 голосов
/ 20 октября 2010

Я бы хотел не вызывать цель в build.xml в случае, если есть определенная переменная окружения.

При использовании Ant 1.7.0 следующий код не работает:

<property environment="env"/>
<property name="app.mode" value="${env.APP_MODE}"/>

<target name="someTarget" unless="${app.mode}">    
   ...
</target>

<target name="all" description="Creates app">
   <antcall target="someTarget" />
</target>

Target «someTarget» выполняется независимо от того, существует переменная окружения APP_MODE или нет.

Ответы [ 2 ]

14 голосов
/ 20 октября 2010

Документы для атрибута unless говорят:

имя свойства, которое не должно быть установлено для выполнения этой цели, или что-то, что оценивается как false

Таким образом, в вашем случае вам нужно указать имя свойства, а не оценку свойства:

<target name="someTarget" unless="app.mode">    
   ...
</target>

Примечания

  • В Ant 1.7.1 и более ранних версиях эти атрибуты могут быть только именами свойств.
  • Начиная с Ant 1.8.0 , вы можете вместо этого использовать расширение свойства; значение true (или включено или да) включит элемент, в то время как false (или выключено или нет) отключит его. Другие значения по-прежнему считаются именами свойств, поэтому элемент активируется, только если определено именованное свойство.

Ссылка

0 голосов
/ 24 марта 2014

Если атрибут не говорит простым языком, что, если свойство установлено, то задача не будет выполнена.например,

<target name="clean" unless="clean.not">
 <delete dir="${src}" />
<property name="clean.not" value="true" />
 <delete dir="${dest}" />
</target>

Здесь, если вы вызываете чистую цель, она выполняется сначала, а затем устанавливается ее значение.И если вы захотите вызвать его снова в скрипте, это не будет сделано, поскольку свойство не должно быть установлено для выполнения задачи.

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