如何将主机和端口参数传递到ant中以供Java主函数使用
我很难找到如何在ant目标中正确使用args 我有一个ant目标,“我们的客户机”,它应该有两个(或零个)参数,一个主机和一个端口供客户机侦听。我认为通过键入以下内容可以很容易地将参数传递给shell:如何将主机和端口参数传递到ant中以供Java主函数使用,java,ant,Java,Ant,我很难找到如何在ant目标中正确使用args 我有一个ant目标,“我们的客户机”,它应该有两个(或零个)参数,一个主机和一个端口供客户机侦听。我认为通过键入以下内容可以很容易地将参数传递给shell: ant our-client -Dhost.arg=127.0.0.1 -Dport.arg=8081 这似乎不起作用。在我的程序的主要功能中,我有一个记录器,它打印出传入的主机和端口。在我解释了我的ant构建文件中的内容之后,我将开始讨论这个问题 这是我为客户编写的目标 <target
ant our-client -Dhost.arg=127.0.0.1 -Dport.arg=8081
这似乎不起作用。在我的程序的主要功能中,我有一个记录器,它打印出传入的主机和端口。在我解释了我的ant构建文件中的内容之后,我将开始讨论这个问题
这是我为客户编写的目标
<target name="our-client" depends="package" description="compiles, packages, and runs the student client">
<java jar="${java.dist}/catan-client.jar" dir="${java.dist}" fork="yes">
<arg value="${host.arg}"/>
<arg value="${port.arg}"/>
<sysproperty key="com.sun.management.jmxremote" value=""/>
<assertions>
<enable/>
</assertions>
</java>
</target>
命令行始终显示:
INFO: host: localhost, port: 8081
我想我一定是把ant命令调用搞砸了。在我看来,它忽略了输入,并使用每个属性的默认值
感谢您的帮助。问题在于使用PowerShell。尽管ant命令在命令提示符下工作,但它不会像在PowerShell中那样工作。 在PowerShell中,如果参数名称中有句点(“.”),PowerShell将把它作为其他内容读取(可能是另一个ant命令)。相反,尝试这样做:
ant our-client "-Dhost.arg=127.0.0.1" "-Dport.arg=8081"
-Dhost=127.0.0.1-Dport=8081
设置属性host
和port
,而不是host.arg
和port.arg
。请使用${host}
和${port}
引用命令行参数。很抱歉。我打错命令了。我想打字-Dhost.arg=127.0.0.1-Dport.arg=8081
我将修复我的帖子。
INFO: host: localhost, port: 8081
ant our-client "-Dhost.arg=127.0.0.1" "-Dport.arg=8081"