Ich habe ein Ant-Skript, das einen Kopiervorgang unter Verwendung der 'copy' task ausführt. Es wurde für Windows geschrieben und hat einen hartkodierten C: \ Pfad als 'todir' Argument. Ich sehe, dass die 'exec' Aufgabe ein Betriebssystem-Argument hat, gibt es eine ähnliche Möglichkeit, eine Kopie basierend auf OS zu verzweigen?Kann ich die Ant-Copy-Task OS-spezifisch machen?
Antwort
Ich würde empfehlen, den Pfad in eine Eigenschaft zu setzen und dann die Eigenschaft bedingt auf dem aktuellen Betriebssystem zu setzen.
Als Nebeneffekt können Sie die Eigenschaft überschreiben, ohne das Ant-Skript zu bearbeiten.
Sie können keine Variable verwenden und sie je nach Typ zuweisen? Sie könnten es in eine build.properties
Datei einfügen. Oder Sie können es mit einem zuweisen.
Sie könnten den Zustand 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 den Stammordner Ihrer Betrieb ist. Präfix Ihre Ordner mit dieser Variable, einschließlich in der Kopieraufgabe.
Setzen Sie die Variable basierend auf dem Betriebssystem mit einer Bedingung oder übergeben Sie sie als Argument an das Ant-Skript.
Die zuvor geposteten Vorschläge für eine OS-spezifische Variable funktionieren, aber oft können Sie einfach das Präfix "C:" weglassen und Forward Slashes (Unix-Stil) Dateipfade verwenden und es wird auf Windows- und Unix-Systemen funktionieren.
Also, wenn Sie Dateien kopieren möchten "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 nicht wollen/müssen eingestellt
<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>
Ant-contrib die < osfamily/> Aufgabe hat: ein bedingter Pfad basierend auf O, kann es als vereinfacht werden. Dadurch wird die Familie des Betriebssystems einer Eigenschaft (die Sie den Namen angeben) ausgesetzt. Dies könnte von Vorteil sein.
- 1. Ich muss eine Regex machen und kann nicht die Syntax
- 2. Wie kann ich die horizontale pdf-Datei machen
- 3. Wie kann ich die Bootstrap Modal Animation schneller machen?
- 4. Wie kann ich die Benachrichtigungssprache mit der Telefonsprache identisch machen?
- 5. Wie kann ich die Recorder-Symbolleiste sichtbar machen?
- 6. Wie kann ich die SQL machen verbinden beiden Felder aus
- 7. Wie kann ich die Statusleiste weiß mit schwarzen Symbolen machen?
- 8. Wie kann ich die folgende Aktionsmethode threadsicher machen?
- 9. Wie kann ich die Ergebnisse eines jQuery JSON-Ergebnis machen Elemente sichtbar machen
- 10. Wie kann ich die Google Eddystone URL-Benachrichtigung machen, um einen Ton zu machen, wenn entdeckt
- 11. Kann ich einen Konstruktor generisch machen, ohne die Klasse generisch zu machen?
- 12. Wie kann ich meine ImageView zoombar machen?
- 13. C++: Kann ich einen Zuweisungsoperator "explizit" machen
- 14. Kann ich Eclipse-Unterstreichungen dicker machen?
- 15. Kann ich einen TTreeNode unsichtbar machen?
- 16. Wie kann ich Links weiß machen?
- 17. Twilio: Kann ich OUTBOUND Conference Calls machen?
- 18. Wie kann ich diese Abfrage allgemeiner machen?
- 19. Wie kann ich ein Etikett mehrzeilig machen?
- 20. Wie kann ich das in Delphi machen?
- 21. Wie kann ich diesen Code wiederverwendbar machen?
- 22. Fehler machen - wie kann ich das beheben?
- 23. Wie kann ich diesen Code eleganter machen?
- 24. kann ich das mit reinem SQL machen?
- 25. Wie kann ich Wickets "AjaxLink" statuslos machen?
- 26. Kann ich updaten Meteor rückgängig machen?
- 27. Kann ich einige Variablen Vorlage spezifisch machen?
- 28. Wie kann ich einen Hintergrund anklickbar machen?
- 29. Wie kann ich meine Website skalierbar machen?
- 30. Wie kann ich Sphinx's vererbung_diagramm lesbar machen?
Gibt es keine Möglichkeit, einen Pfad in Ant zu deklarieren, der unter Windows und Linux gleich behandelt wird? Ich bin nur Neugierig. –