2012-07-11 83 views
15

螞蟻引導ARG1參數3通過命令行參數來定位使用它們在EXEC

我需要回聲「ARG1參數3」,以便我可以調用程序使用這些參數

搜索網頁的以下應該工作,但沒有。

<target name="bootstrap"> 
    <echo>${arg0} ${arg1} ${arg2} </echo> 
    <!--exec executable="cmd"> 
     <arg value="${arg0}"/> 
     <arg value="${arg1}"/> 
     <arg value="${arg2}"/> 
    </exec--> 
</target> 

還有關於如果用戶在5個參數或1個參數中傳遞什麼的任何想法。我需要失敗它沒有適當的參數。

回答

31

不可以,你不能傳遞將在這樣一個構建文件中使用的參數。當您試圖呼叫以下目標bootstrap,arg1,arg2,arg3 - 顯然只有目標bootstrap存在時,ant bootstrap arg1 arg2 arg3將被解析。

如果您確實想傳遞將在構建文件中使用的參數,則需要使用-DpropertyName=value格式。例如:

ant bootstrap -Darg1=value1 -Darg2=value2 -Darg3=value3 

對於其他方式,你可以寫在構建文件(如BeanShell的或JavaScript,與螞蟻的腳本支持庫)嵌入腳本首先處理的參數。例如,您可以傳遞參數以這種方式:

ant bootstrap -Dargs=value1,value2,value3,... 

,現在你有一個屬性名爲args值爲「值1,值2,值3,...」(爲......我的意思是用戶可以輸入3個以上的值)。您可以使用的BeanShell的argsarg1arg2arg3通過,分裂,也做一下檢查...

<script language="beanshell" classpathref="classpath-that-includes-the-beanshell-lib"> 
    String[] args = project.getProperty("args").split(","); 
    project.setUserProperty("arg1", args[0].trim()); 
    project.setUserProperty("arg2", args[1].trim()); 
    project.setUserProperty("arg3", args[2].trim()); 
</script> 
+0

感謝在清除了。但現在我不得不重新考慮我的解決方案。 – 2012-07-11 15:05:23

相關問題