2009-07-28 62 views

回答

31

在Windows上,主机名在环境变量“COMPUTERNAME”中,在Linux上环境变量是“HOSTNAME”。由于蚂蚁性质是不可变的像下面应该工作:

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

即导入环境与ENV前缀属性。然后将env.HOSTNAME设置为env.COMPUTERNAME的值,除非env.HOSTNAME已设置,在这种情况下第二行将不起作用。之后使用需要主机名的env.HOSTNAME。

+0

很好的解决方法 – Michael 2012-10-15 13:19:00

2

您可以为此使用环境变量$ HOSTNAME(UNIX)和%COMPUTERNAME%(Windows)。您可以检查是否已经定义了环境变量HOSTNAME,如果没有,则可以使用环境变量COMPUTERNAME(假设已定义)。作为后备,您可以使用“未知”。

3

将Unix的值复制到Windows版本中。然后你可以使用$ {env.COMPUTERNAME}。

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

将在Linux和Windows

+0

我认为这样更可靠。当我们使用COMPUTERNAME时,在某些机器上,该值的外壳与机器名称的外壳不匹配。 '主机名'迄今一直匹配。 – fnCzar 2010-08-28 19:10:39

+1

+1。我尝试了接受的答案,但失败了。这一个很好。谢谢! – 2011-02-05 00:48:48

-1

我会写一个自定义的Ant任务工作。

一旦你开始写你自己的任务,你会发现蚂蚁获得更多的乐趣和易于使用。你不需要难以理解的奇怪解决方案。

一旦任务被写你只是这样做:

<my:hostname property"hostname" /> 
8

正确的方式找到本地机器的主机名是使用Ant的HostInfo任务。这将适用于所有平台,并由Ant本地支持。

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