2010-11-23 24 views
21

El nombre de la tarea comienza con un guión "-".Línea de comando para ejecutar la tarea Ant con guión en el nombre de la tarea

<?xml version="1.0" encoding="UTF-8"?> 
<project name="proj"> 
    <target name="-task1"> 
     <echo>Done!</echo> 
    </target> 
</project> 

¿Cómo puedo especificar esta tarea al ejecutar el script ant desde la línea de comandos? Esto no funcionaría:

ant -task1 -f test.xml 
+0

¿Por qué necesita para comenzar a nombre de la tarea con '-'? – khachik

+2

Estoy construyendo un proyecto de Android. Y por alguna razón, los nombres de las tareas se parecen a "-pre-build". – alex2k8

Respuesta

25

Incluya el nombre de la tarea entre comillas.

ant "-task1" -f test.xml 

Actualización: De Ant docs

Targets beginning with a hyphen such as "-restart" are valid, 
and can be used to name targets that should not be called directly 
from the command line. 
For Ants main class every option starting with hyphen is an option for Ant itself 
and not a target. For that reason calling these target from command line is not 
possible. On the other hand IDEs usually don't use Ants main class as entry 
point and calling them from the IDE is usually possible. 
+3

Esto no funcionaría, al menos en Windows. Los mensajes de error son: Argumento desconocido: -task1 – alex2k8

+0

Lo siento, esto no fue útil, se probó en un cuadro de Linux. – Jim

+0

Me pregunto si es posible. Puede ser que el equipo de Android use "-" para invisibilizar algunas tareas desde afuera. – alex2k8

12

Algunas personas comienzan a objetivos internos con guiones sólo para asegurarse de que los usuarios no pueden ejecutarlos desde la línea de comandos. De hecho, considero una práctica estándar que todos los objetivos internos comiencen con - solo por este motivo.

Puede probar el viejo truco del doble tablero. No tengo Ant instalado en mi sistema actual, así que no puedo probarlo. Los guiones dobles son un truco común de Unix que la mayoría de los comandos usan para ayudar a finalizar los parámetros cuando tienes archivos y cosas que comienzan con un guión. Por cierto, las tareas deben ser la última cosa en su línea de comandos:

$ ant -f test.xml -- -task1 

peor de los casos, sólo tiene que definir otro objetivo en su archivo build.xml que depende de este objetivo con el tablero en ella:

<task name="sneaky" 
    depends="-task1"/> 

Entonces usted debe ser capaz de llamar sneaky:

$ant -f test.xml sneaky 
+0

Lamentablemente, el truco del doble tablero no parece funcionar. Lo probé en Windows y Linux y obtuve: 'argumento desconocido: -' –

+0

@MartinMcNulty No funciona para mí en CentOS con Ant 1.9.2 tampoco. Ant acaba de tratar el objetivo con el tablero como una opción. – Hei

+0

Sí, el shell no procesa el doble guión, sino que se le asigna al comando llamado como cualquier otro argumento. Si 'ant' no maneja eso de una manera particular, no va a ayudar. –

1

Desde el ANT target doc

Los destinos que comienzan con un guión como "-restart" son válidos y se pueden usar para nombrar objetivos que no se deben invocar directamente desde la línea de comando. Para la clase principal de hormigas, cada opción que comience con guión es una opción para Ant en sí y no un objetivo. Por esa razón, no es posible llamar a estos objetivos desde la línea de comandos.

Por lo tanto, el usuario no puede llamar al objetivo con un guión desde la línea de comandos.

probado en plataforma Windows el 21 de abril de 2016.

Cuestiones relacionadas