web-dev-qa-db-fra.com

Ligne de commande pour exécuter la tâche Ant avec un trait d'union dans le nom de la tâche

Le nom de la tâche commence par un tiret "-".

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

Comment puis-je spécifier cette tâche lors de l'exécution du script ant à partir de la ligne de commande? Cela ne fonctionnerait pas:

ant -task1 -f test.xml
23
alex2k8

Mettez le nom de la tâche entre guillemets.

ant "-task1" -f test.xml

Mise à jour: 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.
26
Jim

Certaines personnes démarrent des cibles internes avec des tirets juste pour s'assurer que les utilisateurs ne peuvent pas les exécuter à partir de la ligne de commande. En fait, je fais en sorte que tous les objectifs internes commencent par - juste pour cette raison.

Vous pouvez essayer l'ancien truc à double tiret. Je n'ai pas Ant installé sur mon système actuel, donc je ne peux pas le tester. Les doubles tirets sont une astuce Unix courante que la plupart des commandes utilisent pour aider à terminer les paramètres lorsque vous avez des fichiers et des trucs qui commencent par un tiret. Soit dit en passant, les tâches devraient être la dernière chose sur votre ligne de commande:

$ ant -f test.xml -- -task1

Pire encore, vous pouvez simplement définir une autre cible dans votre build.xml fichier qui dépend de cette cible avec le tiret dedans:

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

Vous devriez alors pouvoir appeler sneaky:

$ant -f test.xml sneaky
12
David W.

Depuis le doc cible ANT

Les cibles commençant par un tiret tel que "-restart" sont valides et peuvent être utilisées pour nommer des cibles qui ne doivent pas être appelées directement à partir de la ligne de commande. Pour la classe principale des fourmis, chaque option commençant par un trait d'union est une option pour Ant elle-même et non une cible. Pour cette raison, il n'est pas possible d'appeler ces cibles à partir de la ligne de commande.

Ainsi, l'utilisateur ne peut pas appeler la cible avec un trait d'union à partir de la ligne de commande.

Testé sur la plate-forme Windows le 21 avril 2016.

3
Heefan