Kann ich die Ant Kopie Aufgabe OS-spezifische machen?
Frage
Ich habe einen Ant-Skript, das einen Kopiervorgang mit der href="http://ant.apache.org/manual/Tasks/copy.html" führt ‚Kopie‘ Aufgabe . Es wurde für Windows geschrieben und hat eine hartkodierte C: \ Pfad als "todir Argument. Ich sehe die ‚exec‘ Aufgabe, ein O Argument hat, gibt es eine ähnliche Art und Weise eine Kopie auf OS-basierten zu verzweigen?
Lösung
würde ich empfehlen, den Weg in einer Eigenschaft setzen, dann die Eigenschaft Einstellung bedingt basierend auf dem aktuellen Betriebssystem.
<condition property="foo.path" value="C:\Foo\Dir">
<os family="windows"/>
</condition>
<condition property="foo.path" value="/home/foo/dir">
<os family="unix"/>
</condition>
<fail unless="foo.path">No foo.path set for this OS!</fail>
Als Nebeneffekt, wenn es in einer Eigenschaft ist, können Sie sie überschreiben, ohne den Ant-Skript zu bearbeiten.
Andere Tipps
Der geschrieben zuvor Vorschläge einer OS-spezifische Variable wird funktionieren, aber oft können Sie einfach das „C:“ weglassen. Präfix und verwenden Schrägstriche (Unix Stil) Dateipfade und es wird auf Windows- und Unix-Systemen arbeiten
Also, wenn Sie Dateien kopieren "C: / tmp" unter Windows und "/ tmp" auf Unix, Sie so etwas wie verwenden:
<copy todir="/tmp" overwrite="true" >
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
</copy>
Wenn Sie / wollen brauchen einen bedingten Pfad auf OS-basierten einzustellen, kann es als vereinfacht werden:
<condition property="root.drive" value="C:/" else="/">
<os family="windows" />
</condition>
<copy todir="${root.drive}tmp" overwrite="true" >
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
</copy>
Sie können die Bedingung Aufgabe verwenden, um verschiedene Kopieraufgaben zu verzweigen ... von der Ameise Handbuch:
<condition property="isMacOsButNotMacOsX">
<and>
<os family="mac"/>
<not>
<os family="unix"/>
</not>
</and>
Deklarieren Sie eine Variable, die der Stammordner Ihres Betriebes ist. Präfix Ihre Ordner mit diesen Variablen, einschließlich dem in der Kopieraufgabe.
die Variablen Auf der OS-basieren einen bedingten, oder es als Argument für das Ant-Skript übergeben.
Sie können keine Variable verwenden und es zuweisen, je nach Typ? Man konnte es in einer build.properties
Datei setzen. Oder Sie könnten es zuweisen Zustand verwendet wird.
Ant-contrib hat die