Ant и доступная задача - что, если что-то недоступно?

StackOverflow https://stackoverflow.com/questions/133710

  •  02-07-2019
  •  | 
  •  

Вопрос

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

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

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

[available] DEPRECATED -  used to override an existing property.
[available]   Build file should not reuse the same property name for different values.
Это было полезно?

Решение

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

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

  <condition property="fooDoesNotExist">
    <not>
      <available filepath="path/to/foo"/>
    </not>
  </condition>

Другие советы

<available filepath="/path/to/foo" property="foosThere" value="true"/>
<property name="foosThere" value="false"/>

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

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

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

  1. Вы используете доступную задачу в сочетании с not.
  2. Вы создаете задачу, устанавливающую свойство, которое будет выполнено только в том случае, если свойство не задано (если только-атрибут задачи).
  3. Вы просто устанавливаете свойство после звонок доступен.Поскольку свойство будет изменено только в том случае, если оно не задано, это будет делать то, что вы хотите.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top