Расширение параметров в задаче Apache Ant exec

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

У меня есть файл с идентификатором процесса, но я не могу понять, как заставить муравья расширить подстановку команд, чтобы передать содержимое этого файла команде 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>

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

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


person Bryan Agee    schedule 08.02.2015    source источник


Ответы (1)


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

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

РЕДАКТИРОВАТЬ: добавлена ​​цепочка фильтров для обработки дополнительных пробелов

person Stefan Bodewig    schedule 08.02.2015
comment
Это приближается, но по какой-то причине свойство имеет вкладку перед ним и разрыв строки; это снова приводит к сбою kill: не удалось разобрать аргумент: '15718 [exec]' - person Bryan Agee; 08.02.2015
comment
Ааа... кажется, вы также должны использовать filterchain + striplinebreaks, чтобы это сработало. Если вы можете добавить их к своему ответу, я могу выбрать его. - person Bryan Agee; 08.02.2015
comment
Ах, спасибо, не подумал о файле pid, содержащем дополнительные пробелы. - person Stefan Bodewig; 08.02.2015