2012-07-11 19 views
15

hormiga de arranque arg1 arg2 arg3que pasan los parámetros de línea de comandos para apuntar que los utiliza en exec

Necesito hacer eco "arg1 arg2 arg3" para que pueda llamar a un programa con esos argumentos

buscar en la web del El siguiente debería funcionar pero no funciona.

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

también cualquier idea de qué pasar si el usuario pasa 5 args o 1 arg. Necesito fallar, no tiene el número correcto de argumentos.

Respuesta

31

No se puede pasar argumentos que se utilizarán dentro de un fichero de construcción de esa manera. El ant bootstrap arg1 arg2 arg3 se resolverá cuando intente llamar a los siguientes destinos bootstrap, arg1, arg2, arg3 - y, obviamente, solo existe el destino bootstrap.

Si desea pasar argumentos que se utilizarán en el archivo de compilación, debe utilizar el formato -DpropertyName=value. Por ejemplo:

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

Para otras formas, se puede escribir la escritura de inserción en el fichero de construcción (como beanshell o Javascript, con librerías de soporte guión de hormigas) para procesar los argumentos al principio. Por ejemplo, puede pasar los argumentos de esta manera:

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

y ahora usted tiene una propiedad denominada args con el valor "valor1, valor2, valor3, ..." (para ... quiero decir que la el usuario puede escribir más de 3 valores). Se puede utilizar para dividir la beanshell args a arg1, arg2 y arg3 por ,, y también hacer algunas comprobaciones ...

<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

gracias por aclarar eso. pero ahora tengo que replantear mi solución. –

Cuestiones relacionadas