Question

Aujourd'hui, j'ai dû ajouter une tâche à un fichier Apache Ant. La ligne de commande aurait dû être quelque chose comme

myprogram --param1 --param2 path\somefile 2> path\logfile

Le problème, c’est que si j’utilisais quelque chose comme ce qui suit pour cela

<exec executable="$(myprogram)"
  <arg value="--param1">
  <arg value="--param2">
  <arg path="$(somefile)">
  <arg value="2>">
  <arg path="$(logfile)">
</exec>

tous les arguments ont été cités, donc la commande ressemblait à ceci:

myprogram "--param1" "--param2" "path\somefile" "2>" "path\logfile"

ce qui n'est pas mauvais et particulièrement agréable si vous avez des espaces dans votre fichier / chemin, mais détruit le tuyau vers le fichier journal (à la place, le programme pense qu'il existe deux arguments de fichier supplémentaires " 2 > " et " path \ logfile ").

J'ai résolu ce problème en appelant un script de traitement par lots qui ne souhaitait que les fichiers comme paramètres, mais je me suis demandé: est-il possible de le faire sans solution de rechange?

Était-ce utile?

La solution

Lorsque vous exécutez & "myprogram --param1 --param2 path \ somefile 2 > path \ logfile & ", les arguments de votre programme se terminent par &" 2 > & "; La redirection de fichier est une opération de votre shell, qui n'est pas utilisée depuis ant. Si vous consultez la documentation de la tâche ant exec , vous verrez: qu'il prend en charge la redirection via l'attribut sortie .

Autres conseils

Avez-vous essayé <arg line="..." />?

La tâche ant exec a un paramètre de sortie dans lequel vous pouvez spécifier le fichier journal sans nécessiter de canalisation en ligne de commande, associé au paramètre append pour déterminer si le fichier de sortie doit être remplacé ou ajouté.

J'ai eu le même problème que le starter du sujet. Sur une ligne de commande d’exécution java, j’avais besoin d’ajouter des fichiers source en tant qu’arguments séparés, et non en un seul argument entouré de guillemets. J'ai utilisé la balise <arg value="..." />, mais l'utilisation de <arg line="..." /> comme suggéré par nullptr a résolu mon problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top