Tengo un script Ant que realiza una operación de copia usando el 'copy' task. Fue escrito para Windows, y tiene una ruta C: \ como el argumento 'todir'. Veo que la tarea 'ejecutiva' tiene un argumento de sistema operativo. ¿Hay alguna forma similar de ramificar una copia basada en el sistema operativo?¿Puedo hacer que la tarea de copia Ant sea específica del sistema operativo?
Respuesta
Recomendaría poner la ruta en una propiedad, luego establecer la propiedad condicionalmente en base al sistema operativo actual.
<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>
Como beneficio adicional, una vez que está en una propiedad puede anularlo sin editar el script Ant.
No puede usar una variable y asignarla según el tipo? Puede ponerlo en un archivo build.properties
. O puede asignarlo usando un condition.
usted podría utilizar la tarea condición se ramifique a diferentes tareas de copia ... del manual ant:
<condition property="isMacOsButNotMacOsX">
<and>
<os family="mac"/>
<not>
<os family="unix"/>
</not>
</and>
declarar una variable que es la carpeta raíz de la operación. Prefija sus carpetas con esa variable, incluso en la tarea de copia.
Establezca la variable en función del sistema operativo utilizando un condicional, o páselo como argumento al script Ant.
Las sugerencias publicadas anteriormente de una variable específica del sistema operativo funcionarán, pero muchas veces simplemente puede omitir el prefijo "C:" y utilizar las barras diagonales (estilo Unix) y funcionará tanto en sistemas Windows como Unix.
lo tanto, si desea copiar los archivos a "C:/tmp" en Windows y "/ tmp" en Unix, se podrían usar algo como:
<copy todir="/tmp" overwrite="true" >
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
</copy>
Si desea/necesita para establecer un camino condicional basada en el sistema operativo, puede ser simplificado como:
<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 tiene la tarea < osfamily/>. Esto expondrá a la familia del sistema operativo a una propiedad (que especifica el nombre de). Esto podría ser de algún beneficio.
- 1. Cómo hacer que la tarea sea deseable
- 2. Desarrollar un sistema operativo que no sea x86
- 3. ¿Puedo escribir una tarea ant que toma parámetros cuando se ejecuta desde otra tarea ant?
- 4. ¿Cómo puedo hacer que mi swf Ant Generated sea lo más pequeño posible?
- 5. ¿Dónde puedo encontrar la primera versión del sistema operativo Linux?
- 6. Pregunta de arranque del sistema operativo básico
- 7. Copia de rpm de un sistema operativo a otro
- 8. Hay una tarea ant que puede copiar sin perder permisos
- 9. jQuery - detectando el sistema operativo y la versión del sistema operativo
- 10. Finetuning FindBugs tarea ant
- 11. Ant éxito incluso cuando la tarea Ant falla
- 12. Usar ant para detectar el sistema operativo y establecer la propiedad
- 13. Tiempo de compilación del sistema operativo
- 14. Error de la tarea Ant scp
- 15. ¿Cómo puedo reemplazar el calendario predeterminado del sistema operativo Android?
- 16. ¿Existe copia cero en el sistema operativo Windows?
- 17. ¿Puedo hacer que un TTreeNode sea invisible?
- 18. ¿Puedo hacer que JUnit sea más detallado?
- 19. Al usar ANT, ¿cómo puedo definir una tarea solo si tengo alguna versión java específica?
- 20. Jenkins no ejecuta la tarea Ant
- 21. ¿Se puede ejecutar la aplicación MFC en un sistema operativo que no sea Windows?
- 22. Ant archivos de copia
- 23. ¿Qué tipo de C++ tendría que aprender para hacer mi propio núcleo del sistema operativo?
- 24. ¿Cómo puedo hacer que mi subproceso de sistema de entidad componente sea seguro?
- 25. Dónde puedo aprender cómo hacer que un programa C++ interactúe con el sistema operativo (Linux)
- 26. ¿Puedo hacer que el diálogo de ProgressMonitor sea modal?
- 27. Cómo determinar la plataforma del sistema operativo con WMI?
- 28. ¿cómo puedo utilizar el argumento ruta de acceso Gemfile para hacer referencia a las gemas locales en desarrollo con un valor que sea independiente del sistema operativo?
- 29. Requisitos del sistema operativo para arc4random_uniform()
- 30. Hacer que Emacs ignore el diseño del teclado del sistema
¿No hay una forma de declarar una ruta en Ant que se trate de manera igual en Windows y Linux? Tengo curiosidad. –