2009-07-28 4 views

Répondre

31

Sous Windows, le nom d'hôte se trouve dans la variable d'environnement "COMPUTERNAME", sous Linux, la variable d'environnement est "HOSTNAME". Parce que les propriétés de fourmis sont quelque chose d'immuable comme ce qui suit devrait fonctionner:

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

à savoir importer l'environnement en tant que propriétés préfixées avec env. Définissez ensuite env.HOSTNAME comme étant la valeur de env.COMPUTERNAME sauf si env.HOSTNAME est déjà défini, auquel cas la deuxième ligne n'aura aucun effet. Après cela, utilisez env.HOSTNAME où le nom d'hôte est requis.

+0

bonne solution de contournement – Michael

2

Vous pouvez utiliser les variables d'environnement $ HOSTNAME (UNIX) et% COMPUTERNAME% (Windows) pour cela. Vous pouvez vérifier si la variable d'environnement HOSTNAME a été définie et, dans le cas contraire, vous pouvez utiliser la variable d'environnement COMPUTERNAME, en supposant qu'elle soit définie. En tant que solution de repli, vous pouvez utiliser "inconnu".

3

Copiez la valeur pour Unix dans la version Windows. Ensuite, vous pouvez utiliser $ {env.COMPUTERNAME}.

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

fonctionnera sous Linux et Windows

+0

Je pense que c'est plus fiable. À l'époque où nous utilisions COMPUTERNAME, sur CERTAINES machines, l'enveloppe de la valeur ne correspondait pas à l'enveloppe du nom de la machine. 'hostname' a toujours correspondu. – fnCzar

+1

+1. J'ai essayé la réponse acceptée et elle a échoué. Celui-ci a bien fonctionné. Merci! –

+0

Même ici. Cela fonctionne pour moi aussi. Merci! – Curtis

-1

j'écrirais une tâche Ant personnalisée. Une fois que vous commencez à écrire vos propres tâches, vous constaterez que Ant devient beaucoup plus amusant et facile à utiliser. Vous n'avez pas besoin de solutions étranges qui sont difficiles à comprendre.

Une fois que la tâche est écrit que vous voulez simplement faire quelque chose comme:

<my:hostname property"hostname" /> 
8

La bonne façon de trouver le nom d'hôte de la machine locale est à l'aide de la tâche HostInfo Ant. Cela fonctionnera sur toutes les plateformes et est supporté nativement par Ant.

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

Il semble que ce soit la "bonne" réponse, mais quand j'utilise ceci (au moins, sur mon système Debian Sid), '$ {host.NAME}' est défini sur 'localhost'. Exécuter 'hostname' selon la réponse de Rebse renvoie le nom d'hôte réel que je veux. –

Questions connexes