2012-07-11 9 views
15

mrówka bootstrap arg1 arg2 arg3przekazywania parametrów wiersza poleceń do celu, który wykorzystuje je w Exec

muszę echo „arg1 arg2 arg3” tak, że mogę zadzwonić program z tych argumentów

przeszukując internetowej następujące działania powinny działać, ale nie działają.

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

także wszelkie przemyślenia na temat tego, co jeśli użytkownik przechodzi w 5 argumentach lub 1 arg. Muszę zawieść, nie ma odpowiedniej liczby argumentów.

Odpowiedz

31

nr

Nie można przekazywać argumenty, które zostaną użyte wewnątrz pliku budować w ten sposób. Numer ant bootstrap arg1 arg2 arg3 zostanie rozwiązany, próbując wywołać następujące cele: bootstrap, arg1, arg2, arg3 - i oczywiście tylko cel docelowy bootstrap istnieje.

Jeśli chcesz przekazać argumenty, które będą używane w pliku kompilacji, musisz użyć formatu -DpropertyName=value. Na przykład:

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

innych sposobów, można napisać skrypt do osadzenia w pliku kompilacji (jak BeanShell lub z bibliotekami JavaScript, wsparcia skrypt ANT), aby przetworzyć argumenty na początku. Na przykład, można przekazać argumenty w ten sposób:

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

i teraz trzeba właściwość o nazwie args z wartości „wartość1, wartość2, wartość3, ...” (dla ... To znaczy, że użytkownik może wpisać więcej niż 3 wartości). Można używać BeanShell do podzieliła args do arg1, arg2 i arg3 przez ,, a także zrobić kilka sprawdzanie ...

<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

dzięki za wyjaśnienie tej kwestii. ale teraz muszę przemyśleć moje rozwiązanie. –

Powiązane problemy