2008-09-25 2 views
6

Wenn ich die Aufgabe verwende, wird die Eigenschaft nur dann auf TRUE gesetzt, wenn die Ressource (z. B. Datei) verfügbar ist. Wenn nicht, ist die Eigenschaft nicht definiert.Ant und die verfügbare Aufgabe - was, wenn etwas nicht verfügbar ist?

Wenn ich den Wert der Eigenschaft drucke, gibt es "true", wenn die Ressource verfügbar war, ansonsten wird nur der Name der Eigenschaft ausgegeben.

Gibt es eine Möglichkeit, die Eigenschaft auf einen Wert festzulegen, wenn die Ressource nicht verfügbar ist? Ich habe versucht, die Eigenschaft explizit vor der zur Verfügung stehenden Kontroll Einstellung, aber dann ant klagt:

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

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

Antwort

14

Sie eine Bedingung in Kombination mit nicht verwenden können, Verhalten sind die If/Oblig-Attribute in Zielen. Das Ziel mit einem solchen Attribut wird ausgeführt, wenn/eine Eigenschaft mit dem Namen festgelegt ist. Wenn es auf "false" gesetzt ist oder auf "true" gesetzt ist, macht das keinen Unterschied. Sie können also die Verfügbarkeitstask verwenden, um eine Eigenschaft zu setzen (oder nicht) und basierend darauf eine Aufgabe auszuführen (oder nicht). Das Festlegen der Eigenschaft vor der Verfügbarkeitstask ist keine Lösung, da Eigenschaften in ant unveränderlich sind und nicht geändert werden können, sobald sie festgelegt wurden.

Es gibt drei mögliche Lösungen, eine Eigenschaft auf einen Wert zu setzen, wenn ungesetzt vor:

  1. verwenden Sie die verfügbare-Aufgabe in Kombination mit nicht.
  2. Sie erstellen eine Aufgabe zum Festlegen der Eigenschaft, die nur ausgeführt wird, wenn die Eigenschaft nicht festgelegt ist (unless-Attribut der Aufgabe).
  3. Sie einfach die Eigenschaft nach den Aufruf zur Verfügung stellen. Da die Eigenschaft nur geändert wird, wenn sie nicht gesetzt ist, wird dies das tun, was Sie wollen.
2

Der Grund dafür:

 
[available] DEPRECATED - used to override an existing property. 
[available] Build file should not reuse the same property name for different values. 
8
<available filepath="/path/to/foo" property="foosThere" value="true"/> 
<property name="foosThere" value="false"/> 

Die Zuordnung von foosThere wird nur dann erfolgreich sein, wenn sie nicht bereits von Ihrer Verfügbarkeitsprüfung auf true gesetzt wurde.

Verwandte Themen