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?

War es hilfreich?

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 Aufgabe. Dies wird die Familie des Os auf eine Eigenschaft aussetzen (dass Sie den Namen angeben). Diese von einigem Nutzen sein könnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top