Chciałbym wywołać pewien plik EXE z mojego skryptu NAnt i przekazać właściwość jako argument, na wypadek gdyby właściwość istniała lub nie przekazać niczego innego.Jak przekazać argument do zadania NAnt exec warunkowo na podstawie istnienia nieruchomości?
Poniższy kod wydaje się pasować tylko w tym przypadku, ale to nie działa:
<exec program="notepad.exe">
<arg line="${file}" if="${property::exists('file')}" />
</exec>
To rzucać Property 'file' has not been set
błąd. Wygląda na to, że ocenia właściwość ignorując ten warunek. Spodziewam się, że zignoruje cały element <arg>
w przypadku, gdy jego stan to false
.
Jeśli zdefiniuję właściwość powyżej tego bloku, oczywiście działa poprawnie (nawet jeśli właściwość jest pusta). Może to być warte obejścia, jeśli jest to pojedynczy przypadek, ale muszę przekazywać wiele właściwości w ten sam sposób. Poza tym, <if>
nie jest poprawnym elementem pod <exec>
...
Jak to osiągnąć? Jakieś pomysły?
Możesz opcjonalnie ustawić wartość domyślną dla tej samej zmiennej, którą czytasz. Wydaje się to bardziej przejrzyste i zamiast tego jest to pojedyncze zdanie. –
BradLaney
Na podstawie Twojego przypadku użycia masz na myśli poniższy fragment drugiego fragmentu kodu? –