Gibt es eine ANT-Task, die einen Block nur ausführen würde, wenn eine bestimmte Datei vorhanden ist? Ich habe das Problem, dass ich ein generisches Ant-Skript habe, das eine spezielle Verarbeitung durchführen sollte, aber nur, wenn eine bestimmte Konfigurationsdatei vorhanden ist.
file
ant
build-automation
Mario Ortegón
quelle
quelle
Antworten:
Verfügbar und Zustand
quelle
if
undunless
nur das Ziel, an das sie angehängt sind, dh die Abhängigkeiten des Ziels werden immer ausgeführt. Andernfalls würde es nicht funktionieren, von einem Ziel abhängig zu sein, das die Eigenschaft festlegt, nach der Sie suchen.<Available>
veraltet. Ich habe dies verwendet:<target name="do-if-abc" if="${file::exists('abc.txt')}"> ... </target>
check: nant.sourceforge.net/release/0.85/help/functions/…<available>
es veraltet ist? 2:${file::existst...}
scheint nicht mit Ant zu arbeiten (Apache ANT 1.9.7)Dies könnte aus Codierungssicht etwas sinnvoller sein (verfügbar mit ant-contrib: http://ant-contrib.sourceforge.net/ ):
quelle
Seit Ant 1.8.0 gibt es anscheinend auch Ressourcen
Von http://ant.apache.org/manual/Tasks/conditions.html
Ich wollte das Beispiel aus der obigen guten Antwort auf diese Frage überarbeiten und fand es dann
aus dem Ameisenhandbuch unter http://ant.apache.org/manual/properties.html#if+unless
Hoffentlich ist dieses Beispiel für einige von Nutzen. Sie verwenden keine Ressourcen, aber vermutlich könnten Sie? .....
quelle
if="${file.exists}"
dies durchif="file.exists"
as ersetzt werden sollte,if
undunless
überprüfen Sie nur das Vorhandensein einer Eigenschaft anhand des Namens, nicht den Wert.Ich denke, es lohnt sich, auf diese ähnliche Antwort zu verweisen: https://stackoverflow.com/a/5288804/64313
Hier ist eine weitere schnelle Lösung. Mit dem
<available>
Tag sind weitere Variationen möglich :quelle
Aktivieren Sie die Option Dateinamenfilter verwenden wie
DB_*/**/*.sql
Hier ist eine Variante zum Ausführen einer Aktion, wenn eine oder mehrere Dateien vorhanden sind, die einem Platzhalterfilter entsprechen. Das heißt, Sie kennen den genauen Namen der Datei nicht.
Hier suchen wir rekursiv nach " * .sql " -Dateien in Unterverzeichnissen mit dem Namen " DB_ * ". Sie können den Filter an Ihre Bedürfnisse anpassen.
NB: Apache Ant 1.7 und höher!
Hier ist das Ziel, um eine Eigenschaft festzulegen, wenn übereinstimmende Dateien vorhanden sind:
Hier ist ein "bedingtes" Ziel, das nur ausgeführt wird, wenn Dateien vorhanden sind:
quelle
Sie können dies tun, indem Sie den Vorgang mit einer Liste von Dateien mit Namen ausführen, die den Namen entsprechen, die Sie benötigen. Es ist viel einfacher und direkter als ein spezielles Ziel zu erstellen. Und Sie brauchen keine zusätzlichen Werkzeuge, nur reine Ameise.
Siehe: FileSet .
quelle