2009-07-28 2 views

ответ

31

В Windows имя хоста находится в переменной окружения «COMPUTERNAME», а в Linux переменная среды «HOSTNAME». Поскольку муравей свойство неизменно что-то вроде следующей должно работать:

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

т.е. импортировать окружающую среду в качестве свойств с префиксом окр. Затем установите значение env.HOSTNAME как значение env.COMPUTERNAME, если env.HOSTNAME уже установлено, и в этом случае вторая строка не будет иметь никакого эффекта. После этого используйте env.HOSTNAME, где требуется имя хоста.

+0

хорошее обходное решение – Michael

2

Для этого можно использовать переменные среды $ HOSTNAME (UNIX) и% COMPUTERNAME% (Windows). Вы можете проверить, была ли определена переменная среды HOSTNAME и, если нет, вы можете использовать переменную окружения COMPUTERNAME, если она определена. В качестве резерва вы можете использовать «unknown».

3

Скопируйте значение для Unix в версию Windows. Затем вы можете использовать $ {env.COMPUTERNAME}.

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

будет работать на Linux и окна

+0

Я думаю, что это более надежный. Когда мы использовали COMPUTERNAME, на некоторых машинах корпус значения не соответствовал корпусу имени машины. «hostname» до сих пор всегда соответствовало. – fnCzar

+1

+1. Я пробовал принятый ответ, и он не прошел. Это отлично работало. Благодаря! –

+0

То же самое здесь. Это работает и для меня. Благодаря! – Curtis

-1

Я хотел бы написать пользовательские задачи Ant.

Как только вы начнете писать свои собственные задачи, вы обнаружите, что Ant становится намного веселее и прост в использовании. Вам не нужны странные решения, которые трудно понять.

После того, как задача написана вы бы просто сделать что-то вроде:

<my:hostname property"hostname" /> 
8

Правильный способ найти имя хоста локальной машины является использование HostInfo задачи муравья. Это будет работать на всех платформах и поддерживаться Ant.

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

Похоже, что это должен быть «правильный» ответ, но когда я использую это (по крайней мере, в моей системе Debian Sid), '$ {host.NAME}' устанавливается на 'localhost'. Запуск «hostname» в ответ на ответ Rebse возвращает фактическое имя хоста, которое я хочу. –