Pergunta

Quando uso a tarefa, a propriedade está definida apenas como true se o recurso (digamos o arquivo) estiver disponível. Caso contrário, a propriedade é indefinida.

Quando imprimo o valor da propriedade, ele dá verdade se o recurso estivesse disponível, mas apenas imprime o nome da propriedade.

Existe uma maneira de definir a propriedade como algum valor se o recurso for não acessível? Tentei definir a propriedade explicitamente antes da verificação disponível, mas Ant reclama:

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

Solução

Você pode usar uma condição em combinação com não:

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

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

Outras dicas

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

A atribuição do Fotere só será bem -sucedida se ainda não tiver sido definida como true pela sua verificação de disponibilidade.

O motivo desse comportamento é o IF/a menos que atribui em metas. O destino com esse atributo será executado se/a menos que uma propriedade com o nome seja definida. Se estiver definido como false ou definido como true, não fará diferença. Assim, você pode usar a tarefa disponível para definir (ou não) uma propriedade e com base nessa execução (ou não) uma tarefa. Definir a propriedade antes da tarefa disponível não é uma solução, pois as propriedades da ANT são imutáveis, elas não podem ser alteradas uma vez definidas.

Existem três soluções possíveis, para definir uma propriedade como um valor se não for definido antes:

  1. Você usa a tarefa disponível em combinação com não.
  2. Você cria uma tarefa definindo a propriedade, que será executada apenas se a propriedade não for definida (a menos que atribua a tarefa).
  3. Você simplesmente define a propriedade depois a chamada para disponível. Como a propriedade só será alterada, se não for definida, isso fará o que você deseja.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top