我很难找到如何正确使用蚂蚁目标中的args。
我有一个蚂蚁目标,"我们的客户,"应该采用两个(或零)参数,一个主机和一个端口供客户端监听。我认为通过输入以下内容将参数传递给shell很容易:
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>
我似乎无法理解的部分是这些&#34; arg&#34;&#34;工作。在ant构建文件的顶部,我已经定义了以下两个属性。
<property name="port.arg" value="8081"/>
<property name="host.arg" value="localhost"/>
我这样做是为了让这个特定目标的参数是可选的。如果没有提供,它将在默认设置下运行。
返回我的程序的主要功能。无论我在命令行输入什么,主机总是设置为localhost,端口类似地设置为8081.这是我的主函数内部的日志记录部分
public static void main(final String[] args)
{
...
if (args.length == 2)
{
String host = args[0];
String port = args[1];
LOGGER.info("host: " + host + ", port: " + port);
}
...
}
命令行始终显示:
INFO: host: localhost, port: 8081
我认为我必须在ant命令调用中弄乱一些东西。在我看来,它忽略了输入并使用每个属性的默认值。
感谢任何帮助。
答案 0 :(得分:3)
问题在于使用PowerShell。尽管您的ant命令在命令提示符中有效,但它在PowerShell中不起作用。 在PowerShell中,如果参数名称中包含句点(“。”),PowerShell会将其作为其他内容(可能是另一个ant命令)读取。相反,尝试这样做:
ant our-client "-Dhost.arg=127.0.0.1" "-Dport.arg=8081"