ant machine name property

2019-03-17 08:33发布

Is there a way to get the machine name as ant property, for both Linux and Windows OS.

6条回答
We Are One
2楼-- · 2019-03-17 08:50

You can use the environment variables $HOSTNAME (UNIX) and %COMPUTERNAME% (Windows) for this. You can check to see if the environment variable HOSTNAME has been defined and, if not, you can then use the environment variable COMPUTERNAME, assuming it is defined. As a fallback, you can use "unknown".

查看更多
Root(大扎)
3楼-- · 2019-03-17 08:54

I would write a custom Ant task.

Once you start writing you own tasks you will find that Ant gets a lot more fun and easy to use. You don't need strange solutions that are hard to understand.

Once the task is written you would just do something like:

<my:hostname property"hostname" />
查看更多
神经病院院长
4楼-- · 2019-03-17 09:01
<exec executable="hostname" outputproperty="computer.hostname"/>

will work on linux and windows

查看更多
小情绪 Triste *
5楼-- · 2019-03-17 09:11

The correct way to find the local machine's hostname is by using Ant's HostInfo task. This will work across all platforms and is natively supported by Ant.

<hostinfo prefix="host." />
<echo message="My hostname is '${host.NAME}'" />
查看更多
Bombasti
6楼-- · 2019-03-17 09:11

Copy the value for Unix into the Windows version. Then you can use ${env.COMPUTERNAME}.

<property name="env.COMPUTERNAME" value="${env.HOSTNAME}"/>
查看更多
仙女界的扛把子
7楼-- · 2019-03-17 09:12

On Windows the hostname is in the environment variable "COMPUTERNAME", on Linux the environment variable is "HOSTNAME". Because ant properties are immutable something like the following should work:

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

i.e. import the environment as properties prefixed with env. Then set env.HOSTNAME to be the value of env.COMPUTERNAME unless env.HOSTNAME is already set in which case the 2nd line will have no effect. After that use env.HOSTNAME where the hostname is required.

查看更多
登录 后发表回答