Аргументы командной строки Apache Ant без двойных кавычек - возможно ли это?

StackOverflow https://stackoverflow.com/questions/1602668

Вопрос

Сегодня мне нужно было добавить задачу в файл Apache Ant. Командная строка должна была выглядеть примерно так

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

Проблема с этим заключалась в том, что если бы я использовал что-то вроде следующего для этого

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

все аргументы были указаны, поэтому команда выглядела так:

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

, что неплохо и особенно приятно, если в вашем файле / пути есть пробелы, но он уничтожает канал к файлу журнала (вместо этого программа считает, что есть два дополнительных файловых аргумента " 2 > " и " путь \ logfile ").

Я решил эту проблему, вызвав вместо этого пакетный сценарий, который требует только файлы в качестве параметров, но я удивился: возможно ли это сделать без такого обходного пути?

Это было полезно?

Решение

Когда вы запускаете " myprogram --param1 --param2 path \ somefile 2 > путь \ logfile " ;, аргументы вашей программы заканчиваются на " 2 > " ;. Перенаправление файлов - это операция вашей оболочки, которая не используется изнутри муравья. Если вы посмотрите документы по задаче ant exec , вы увидите что он поддерживает перенаправление через атрибут output .

Другие советы

Вы пробовали <arg line="..." />?

Задача ant exec имеет выходной параметр, в котором вы можете указать файл журнала, не требуя конвейера командной строки, в сочетании с параметром append для определения необходимости перезаписи или добавления выходного файла.

У меня была такая же проблема, как и у стартера темы. В командной строке выполнения java мне нужно было добавлять исходные файлы как отдельные аргументы, а не как один аргумент с кавычками вокруг них. Я использовал тег <arg value="..." />, но использование <arg line="..." />, как предлагал nullptr, решило мою проблему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top