2009-07-28 26 views

risposta

31

Su Windows il nome host è nella variabile di ambiente "COMPUTERNAME", su Linux la variabile di ambiente è "HOSTNAME". Perché le proprietà formica sono qualcosa di immutabile, come il seguente dovrebbe funzionare:

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

cioè importare l'ambiente come proprietà con prefisso env. Quindi imposta env.HOSTNAME come valore di env.COMPUTERNAME a meno che env.HOSTNAME sia già impostato, nel qual caso la seconda riga non avrà alcun effetto. Successivamente usa env.HOSTNAME dove è richiesto il nome host.

+0

soluzione piacevole – Michael

2

È possibile utilizzare le variabili di ambiente $ HOSTNAME (UNIX) e% COMPUTERNAME% (Windows) per questo. È possibile verificare se la variabile di ambiente HOSTNAME è stata definita e, in caso contrario, è possibile utilizzare la variabile di ambiente COMPUTERNAME, assumendo che sia definita. Come ripiego, puoi usare "sconosciuto".

3

Copia il valore di Unix nella versione di Windows. Quindi puoi usare $ {env.COMPUTERNAME}.

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

funziona su Linux e Windows

+0

Penso che questo sia più affidabile. Indietro quando stavamo usando COMPUTERNAME, su alcune macchine l'involucro del valore non corrispondeva al rivestimento del nome della macchina. 'hostname' ha finora sempre trovato una corrispondenza. – fnCzar

+1

+1. Ho provato la risposta accettata e ha fallito. Questo ha funzionato alla grande. Grazie! –

+0

Lo stesso qui. Funziona anche per me. Grazie! – Curtis

-1

vorrei scrivere un compito Ant personalizzato.

Una volta che inizi a scrivere le tue attività, scoprirai che Ant diventa molto più divertente e facile da usare. Non hai bisogno di strane soluzioni difficili da capire.

volta che il compito è stato scritto si dovrebbe solo fare qualcosa di simile:

<my:hostname property"hostname" /> 
8

Il modo corretto per trovare il nome host della macchina locale, è quello di utilizzare il compito di Ant HostInfo. Questo funzionerà su tutte le piattaforme ed è supportato nativamente da Ant.

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

Sembra che questa dovrebbe essere la risposta "giusta", ma quando uso questo (almeno, sul mio sistema Debian Sid), '$ {host.NOME}' è impostato su 'localhost'. L'esecuzione di 'hostname' come da risposta di Rebse restituisce il nome host effettivo che voglio. –

Problemi correlati