2015-02-08 9 views
1

У меня есть сборка, для которой требуется задача для запуска процесса, а другая - для ее уничтожения в конце.Расширение параметров в Apache Ant exec task

У меня есть файл с идентификатором процесса, но не могу понять, как сделать ant расширением подстановки команды, чтобы передать содержимое этого файла команде kill.

Я пробовал:

<target name="kill process"> 
    <exec executable="kill"> 
     <arg value="`cat process-file`"/> 
    </exec> 

... 

И:

<target name="kill process"> 
    <exec executable="kill"> 
     <arg value="$(cat process-file)"/> 
    </exec> 

но оба преобразуются в строки litterals, и поэтому в результате: [exec] kill: failed to parse argument: '$(cat process-file)'

Есть ли способ сделать муравья расширить их? Или совсем другой путь для этого?

ответ

3

Задайте задачу Ant loadfile, чтобы прочитать содержимое файла в собственность.

<loadfile srcFile="process-file" property="pid"> 
    <filterchain> 
    <striplinebreaks/> 
    </filterchain> 
</loadfile> 
<exec executable="kill"> 
    <arg value="${pid}"/> 
</exec> 

EDIT: добавлено FilterChain дело с дополнительным пробелом

+0

Это становится все ближе, но по какой-то причине свойство имеет вкладку перед ним, и разрыв строки; который заставляет kill снова сбой: невозможно проанализировать аргумент: '15718 [exec]' –

+0

Ahhh ... похоже, вы также должны использовать filterchain + striplinebreaks, чтобы сделать эту работу. Если вы можете добавить их к своему ответу, я могу выбрать его. –

+0

А, спасибо, не думал о файле pid, содержащем дополнительные пробелы. –