2009-07-28 21 views

Respuesta

31

En Windows, el nombre de host está en la variable de entorno "COMPUTERNAME", en Linux la variable de entorno es "HOSTNAME". Dado que las propiedades de hormigas son inmutables algo como lo siguiente debería funcionar:

<property environment="env"/> 
<property name="env.HOSTNAME" value="${env.COMPUTERNAME}"/> 
<echo message="hostname = ${env.HOSTNAME}"/> 

es decir, importar el medio ambiente como propiedades con el prefijo env. A continuación, configure env.HOSTNAME para que sea el valor de env.COMPUTERNAME a menos que env.HOSTNAME ya esté configurado, en cuyo caso la segunda línea no tendrá ningún efecto. Después de eso use env.HOSTNAME donde se requiere el nombre de host.

+0

nice workaround – Michael

2

Puede usar las variables de entorno $ HOSTNAME (UNIX) y% COMPUTERNAME% (Windows) para esto. Puede verificar si la variable de entorno HOSTNAME se ha definido y, de lo contrario, puede utilizar la variable de entorno COMPUTERNAME, suponiendo que esté definida. Como alternativa, puede usar "desconocido".

3

Copie el valor de Unix en la versión de Windows. Entonces puede usar $ {env.COMPUTERNAME}.

<property name="env.COMPUTERNAME" value="${env.HOSTNAME}"/> 
32
<exec executable="hostname" outputproperty="computer.hostname"/> 

funcionará en Linux y Windows

+0

Creo que esto es más confiable. Cuando estábamos usando COMPUTERNAME, en ALGUNAS máquinas, la carcasa del valor no coincidía con la carcasa del nombre de la máquina. 'hostname' siempre ha coincidido. – fnCzar

+1

+1. Intenté la respuesta aceptada y falló. Este funcionó muy bien. ¡Gracias! –

+0

Lo mismo aquí. Esto funciona para mí también. ¡Gracias! – Curtis

-1

que iba a escribir una tarea personalizada hormiga.

Una vez que comience a escribir sus propias tareas, encontrará que Ant se vuelve mucho más divertido y fácil de usar. No necesita soluciones extrañas que sean difíciles de entender.

Una vez que la tarea se ha escrito usted acaba de hacer algo como:

<my:hostname property"hostname" /> 
8

La forma correcta para encontrar el nombre de host de la máquina local es mediante el uso de tareas de Ant HostInfo. Esto funcionará en todas las plataformas y es soportado nativamente por Ant.

<hostinfo prefix="host." /> 
<echo message="My hostname is '${host.NAME}'" /> 
+2

Parece que esta debería ser la respuesta "correcta", pero cuando uso esto (al menos, en mi sistema Debian Sid), '$ {host.NAME}' se establece en 'localhost'. Ejecutar 'hostname' según la respuesta de Rebse devuelve el nombre de host real que quiero. –

Cuestiones relacionadas