Wie kann man testen, um zu sehen, dass ein Verzeichnis in Ant leer ist?Wie kann ich testen, ob ein Verzeichnis in ANT leer ist?
15
A
Antwort
17
Sie können dazu die pathconvert
Aufgabe verwenden, mit der Eigenschaft setonempty
. Für einen Anwendungsfall siehe this example.
<pathconvert refid="myfileset"
property="fileset.notempty"
setonempty="false"/>
wird setzen Sie die Eigenschaft fileset.notempty
nur, wenn die fileset diejenigen refid ist myfileset
nicht leer ist.
Sie müssen nur myfileset
mit Ihrem Verzeichnis definieren, und es wird keine umfasst nicht tun ein Verzeichnis leer Test erhalten:
<fileset dir="foo/bar" id="myfileset"/>
3
Die für tonio's answer nur eine Ergänzung ist.
git clone
wenndir
leergit fetch
sonst
<target name="cvs_checkout" depends="git.clone, git.fetch" />
<target name="git.clone" depends="check.dir" unless="dir.contains-files">
<echo message="Directory ${dir} is empty -} git clone" />
<exec executable="git">
<arg value="clone"/>
<arg value="${repo}"/>
<arg value="${dir}"/>
</exec>
</target>
<target name="git.fetch" depends="check.dir" if="dir.contains-files">
<echo message="Directory ${dir} contains files -} git fetch" />
<exec executable="git" dir="${dir}">
<arg value="fetch"/>
</exec>
</target>
<target name="check.dir">
<fileset dir="${dir}" id="fileset"/>
<pathconvert refid="fileset" property="dir.contains-files" setonempty="false"/>
</target>
Ich kann nicht glauben, niemand hat diese gestellt:
In diesem Beispiel
cvs checkout
wirdgit
Befehle emuliert ... gut ANT ist nett o f alt ich denke ... – leeand00... na ja, es funktioniert für das, was ich automatisiere. – leeand00