Mi programa obtiene argumentos de línea de comandos. ¿Cómo puedo pasarlo cuando uso Ant?Utilice Ant para ejecutar el programa con argumentos de línea de comando
Respuesta
Extendiendo Richard Cook 's respuesta.
Aquí está la ant
tarea para ejecutar cualquier programa (incluyendo, pero no limitado a los programas de Java):
<target name="run">
<exec executable="name-of-executable">
<arg value="${arg0}"/>
<arg value="${arg1}"/>
</exec>
</target>
Aquí es la tarea a ejecutar un programa Java desde un archivo .jar
:
<target name="run-java">
<java jar="path for jar">
<arg value="${arg0}"/>
<arg value="${arg1}"/>
</java>
</target>
Puede invocar desde la línea de comandos de esta manera:
ant -Darg0=Hello -Darg1=World run
Asegúrese de utilizar la sintaxis -Darg
; si ejecutó esto:
ant run arg0 arg1
continuación ant
trataría de ejecutar los objetivos arg0
y arg1
.
¿Puede ser un poco más específico sobre lo que está tratando de hacer y cómo está tratando de hacerlo?
Si usted está tratando de invocar el programa mediante la tarea <exec>
puede hacer lo siguiente:
<exec executable="name-of-executable">
<arg value="arg0"/>
<arg value="arg1"/>
</exec>
Me gusta: ant run arg0 arg1 –
El único mecanismo eficaz para pasar parámetros a una acumulación es usar las propiedades de Java:
ant -Done=1 -Dtwo=2
El siguiente ejemplo muestra cómo se puede verificar y asegurar los parámetros esperados se han pasado a la secuencia de comandos
<project name="check" default="build">
<condition property="params.set">
<and>
<isset property="one"/>
<isset property="two"/>
</and>
</condition>
<target name="check">
<fail unless="params.set">
Must specify the parameters: one, two
</fail>
</target>
<target name="build" depends="check">
<echo>
one = ${one}
two = ${two}
</echo>
</target>
</project>
Emory me ganó :-) –
¿Cómo se ve xml cuando no sé cuántos argumentos tendré? –
¿Qué pasa si el número de args no es constante? –
Si no desea manejar propiedades separadas para cada argumento posible, sugiero que tendría que utilizar:
<arg line="${args}"/>
Puede comprobar si la propiedad no se ajusta con un objetivo específico con un atributo unless
y en el interior hacer:
<input message="Type the desired command line arguments:" addProperty="args"/>
Poniendo todo junto da:
<target name="run" depends="compile, input-runargs" description="run the project">
<!-- You can use exec here, depending on your needs -->
<java classname="Main">
<arg line="${args}"/>
</java>
</target>
<target name="input-runargs" unless="args" description="prompts for command line arguments if necessary">
<input addProperty="args" message="Type the desired command line arguments:"/>
</target>
Usted puede utilizarlo de la siguiente :
ant
ant run
ant run -Dargs='--help'
Los dos primeros comandos solicitarán los argumentos de la línea de comandos, mientras que el último ganó 't.
Me gusta cómo propuso una solución sin los -Dargs – Sgene9
Lo que hice al final es hacer un archivo por lotes para extraer el CLASSPATH del archivo de hormigas, a continuación, ejecutar Java directamente utilizando la siguiente:
En mi build.xml:
<target name="printclasspath">
<pathconvert property="classpathProp" refid="project.class.path"/>
<echo>${classpathProp}</echo>
</target>
En otro script llamado 'ejecutar.sh ':
export CLASSPATH=$(ant -q printclasspath | grep echo | cut -d \ -f 7):build
java "[email protected]"
Ya no es multiplataforma, pero al menos es relativamente fácil de usar, y se podría proporcionar un archivo .bat que hace lo mismo que el run.sh. Es un script por lotes muy corto. No es como migrar toda la construcción a archivos por lotes específicos de la plataforma.
creo que es una lástima que no hay alguna opción en la hormiga por el que usted podría hacer algo como:
ant -- arg1 arg2 arg3
mpirun utiliza este tipo de sintaxis; ssh también puede usar esta sintaxis, creo.
- 1. Ejecutar archivo jar con argumentos de línea de comando
- 2. Java ejecutar el programa de línea de comando
- 3. Línea de comando para ejecutar la tarea Ant con guión en el nombre de la tarea
- 4. Ejecución de eclipse con argumentos de línea de comando
- 5. argumentos de línea de comando con leiningen
- 6. Ejecutar el script de PowerShell desde C# con los argumentos de la línea de comando
- 7. Argumentos de línea de comando en python.
- 8. Cómo ejecutar frasco con argumentos de línea de comandos
- 9. Ejecutar el comando de línea de comando interactivo usando C#
- 10. Ocultar argumentos de la línea de comando para el programa C en Linux
- 11. Powershell Ejecutar el exe remoto con argumentos de la línea de comando en la computadora remota
- 12. ¿Cómo establecer los argumentos de línea de comando de un programa para GHCi?
- 13. Hacer un comando de "macro" para ejecutar un programa
- 14. ¿Cómo puedo ejecutar un comando de línea de comando desde un programa en C++
- 15. Argumentos de línea de comando de autocompletado
- 16. Uso de argumentos de línea de comando adicionales con gunicorn
- 17. argumentos de línea de comando pase powershell
- 18. ¿Cómo ejecutar un programa con argumentos con MONO?
- 19. función R para analizar los argumentos de línea de comando
- 20. ¿Cómo acceder a los argumentos de línea de comando pasados a un programa Go?
- 21. Cuál es el patrón de diseño para procesar los argumentos de línea de comando
- 22. Haskell: Análisis de los argumentos de la línea de comando
- 23. Pase argumentos al programa C desde la línea de comandos
- 24. Cómo ejecutar el compilador JAXB de ANT
- 25. cómo utilizar ejecutar() en maravilloso para ejecutar cualquier comando
- 26. Ejecutar comando de línea de comando desde NSIS
- 27. Línea de comando args en el programa C usando Netbeans
- 28. ¿Cómo probar los argumentos de la línea de comando?
- 29. Llamar línea de comando desde el programa C
- 30. Argumentos de la línea de comando de Flash Player para "Crear proyector"
¿Es el "nombre-de-ejecutable" la ruta para jar? –
La tarea ejecutiva (http://ant.apache.org/manual/Tasks/exec.html) ejecutará cualquier programa arbitrario. La tarea java (http://ant.apache.org/manual/Tasks/java.html) ejecutará un programa java. – emory