Муравей и доступная задача - что, если что-то не доступно? - PullRequest
6 голосов
/ 25 сентября 2008

Когда я использую задачу, для свойства устанавливается значение TRUE, только если ресурс (например, файл) доступен. Если нет, свойство не определено.

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

Есть ли способ присвоить свойству какое-либо значение, если ресурс недоступен ? Я попытался установить свойство явно перед доступной проверкой, но затем ant жалуется:

[available] DEPRECATED -  used to override an existing property.
[available]   Build file should not reuse the same property name for different values.

Ответы [ 3 ]

15 голосов
/ 25 сентября 2008

Вы можете использовать условие в сочетании с not:

http://ant.apache.org/manual/Tasks/condition.html

  <condition property="fooDoesNotExist">
    <not>
      <available filepath="path/to/foo"/>
    </not>
  </condition>
8 голосов
/ 02 сентября 2009
<available filepath="/path/to/foo" property="foosThere" value="true"/>
<property name="foosThere" value="false"/>

Назначение foosThere будет успешным, только если оно еще не было установлено в true при проверке доступности.

2 голосов
/ 25 сентября 2008

Причиной такого поведения являются атрибуты if / never-целей. Цель с таким атрибутом будет выполнена, если / если не установлено свойство с именем. Если установлено значение false или значение true, не имеет значения. Таким образом, вы можете использовать доступную задачу, чтобы установить (или нет) свойство и на основании этого выполнить (или нет) задачу. Установка свойства перед доступной задачей не является решением, так как свойства в ant являются неизменяемыми, их нельзя изменить после установки.

Существует три возможных решения установить свойство в значение, если оно не установлено ранее:

  1. Вы используете доступное задание в комбинация с не.
  2. Вы создаете задачу, задающую свойство, которое будет выполняться, только если свойство не установлено (если только атрибут задачи).
  3. Вы просто устанавливаете свойство после вызова на доступные. Поскольку свойство будет изменено, только если оно не установлено, это будет делать то, что вы хотите.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...