我很難找到如何正確使用ant目標中的args。如何將主機和端口參數傳遞給要由Java主函數使用的螞蟻
我有一個螞蟻目標,「我們的客戶端」,它應該採取兩個(或零)參數,主機和端口供客戶端收聽。我認爲通過輸入以下參數可以很容易地將參數傳遞給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>
我似乎無法理解的部分是這些「arg's」如何工作。在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
我認爲我一定在搞螞蟻命令調用一些東西。它在我看來,它忽略了輸入,並與每個屬性的默認值。
任何幫助表示讚賞。
'-Dhost = 127.0.0.1 -Dport = 8081'設置屬性host和port,而不是host.arg和port.arg。使用'$ {host}'和'$ {port}'來引用命令行參數。 –
我很抱歉。我錯誤地輸入了我的命令。我打算打字。 '-Dhost.arg = 127.0.0.1 -Dport.arg = 8081'我將修復我的帖子。 –