2012-07-11 9 views
15

formica bootstrap arg1 arg2 arg3passaggio di parametri della riga di comando per indirizzare che li utilizza in exec

devo echo "arg1 arg2 arg3" in modo che posso chiamare un programma con tali argomenti

cercando una la seguire dovrebbe funzionare ma non lo fa.

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

anche qualsiasi idea su cosa succede se l'utente passa in 5 args o 1 arg. Ho bisogno di fallire non ha il numero giusto di args.

risposta

31

No.

Non si può passare gli argomenti che verranno utilizzati all'interno di un file di costruzione in quel modo. Il ant bootstrap arg1 arg2 arg3 verrà risolto mentre si sta tentando di chiamare i seguenti target bootstrap, arg1, arg2, arg3 e, ovviamente, esiste solo il target bootstrap.

Se si desidera passare argomenti che verranno utilizzati nel file di generazione, è necessario utilizzare il formato -DpropertyName=value. Per esempio:

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

Per gli altri modi, è possibile scrivere lo script embed nel file build (come BeanShell o JavaScript, con librerie di supporto sceneggiatura di Ant) per elaborare gli argomenti in un primo momento. Ad esempio, è possibile passare gli argomenti in questo modo:

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

e ora avete una proprietà denominata args con il valore "valore1, valore2, value3, ..." (per ... voglio dire che la l'utente può digitare più di 3 valori). È possibile utilizzare BeanShell per dividere la args-arg1, arg2 e arg3 da ,, e anche fare qualche controllo ...

<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

grazie per chiarire che fino. ma ora devo ripensare alla mia soluzione. –

Problemi correlati