ausführen von Ant-task, wenn ZWEI Bedingungen erfüllt sind
Die oben ant - Skript implementiert if dir_is_empty then git-clone else git-fetch
mit Hilfe von Ant-1.7.1 Kernaussagen:
<target name="update" depends="git.clone, git.fetch" />
<target name="check.dir">
<fileset dir="${dir}" id="fileset"/>
<pathconvert refid="fileset" property="dir.contains-files" setonempty="false"/>
</target>
<target name="git.clone" depends="check.dir" unless="dir.contains-files">
<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" >
<exec executable="git" dir="${dir}">
<arg value="fetch"/>
</exec>
</target>
(siehe meine andere post)
Aber wie implementieren einer target
aktiviert ist, indem Sie zwei Bedingungen?
if dir_does_not_exist or dir_is_empty then git-clone else git-fetch
mein Aktueller Versuch:
<target name="git.clone"
depends="chk.exist, chk.empty"
unless="!dir.exist || dir.noempty" >
[...]
</target>
<target name="chk.exist">
<condition property="dir.exist">
<available file="${dir}/.git" type="dir"/>
</condition>
</target>
[...]
Ich würde es vorziehen, Ant-1.7.1 wesentliche Aussagen. Aber ich bin offen über andere Möglichkeiten als Ant contrib, oder das eingebettete script... Feel free to post your ideas...
Werden(siehe auch Frage Ausführen von ANT-task nur aus, wenn eine Bedingung erfüllt ist)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Selbst gefesselt Ant 1.7.1 Sie können kombinieren Ihre 3 chk Ziele in einem, finden Sie in der Zustand Teil im snippet.
Da Ant 1.9.1 (bessere Nutzung von Ant 1.9.3, weil der Fehler in Ameise 1.9.1 finden Sie diese Antwort für details) ist es möglich, fügen Sie wenn und es sei denn, Attribute auf alle Aufgaben und verschachtelte Elemente, so dass keine zusätzliche Punktezahl, die notwendig ist, f.e. :
Aus der ant - Dokumentation auf Ziele:
Darüber hinaus gab es einige Diskussionen auf [email protected] und [email protected] mailing-Listen:
Beispielsweise die folgenden
target
vereint zwei Eigenschaften (dir.exist
unddir.noempty
) weiteres erstellen (cloned
) die Verwendung von Operatoren<and>
und<istrue>
(viele andere die Betreiber sind dokumentiert als<or>
,<xor>
,<not>
,<isfalse>
,<equals>
,<length>
).Den oben
property
"cloned"
verwendet wird, durch Zielegit.clone
undgit.fetch
wie folgt: