Есть ли способ получить имя машины как свойство ant, как для ОС Linux, так и для ОС Windows.ant machine name property
ответ
В 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, где требуется имя хоста.
Для этого можно использовать переменные среды $ HOSTNAME (UNIX) и% COMPUTERNAME% (Windows). Вы можете проверить, была ли определена переменная среды HOSTNAME и, если нет, вы можете использовать переменную окружения COMPUTERNAME, если она определена. В качестве резерва вы можете использовать «unknown».
Скопируйте значение для Unix в версию Windows. Затем вы можете использовать $ {env.COMPUTERNAME}.
<property name="env.COMPUTERNAME" value="${env.HOSTNAME}"/>
<exec executable="hostname" outputproperty="computer.hostname"/>
будет работать на Linux и окна
Я думаю, что это более надежный. Когда мы использовали COMPUTERNAME, на некоторых машинах корпус значения не соответствовал корпусу имени машины. «hostname» до сих пор всегда соответствовало. – fnCzar
+1. Я пробовал принятый ответ, и он не прошел. Это отлично работало. Благодаря! –
То же самое здесь. Это работает и для меня. Благодаря! – Curtis
Я хотел бы написать пользовательские задачи Ant.
Как только вы начнете писать свои собственные задачи, вы обнаружите, что Ant становится намного веселее и прост в использовании. Вам не нужны странные решения, которые трудно понять.
После того, как задача написана вы бы просто сделать что-то вроде:
<my:hostname property"hostname" />
Правильный способ найти имя хоста локальной машины является использование HostInfo
задачи муравья. Это будет работать на всех платформах и поддерживаться Ant.
<hostinfo prefix="host." />
<echo message="My hostname is '${host.NAME}'" />
Похоже, что это должен быть «правильный» ответ, но когда я использую это (по крайней мере, в моей системе Debian Sid), '$ {host.NAME}' устанавливается на 'localhost'. Запуск «hostname» в ответ на ответ Rebse возвращает фактическое имя хоста, которое я хочу. –
хорошее обходное решение – Michael