2015-02-08 56 views
1

我有一個構建需要啓動一個進程的任務,另一個需要在最後進行殺死。展開Apache Ant exec任務中的參數

我有一個包含進程ID的文件,但無法弄清楚如何讓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> 

編輯:添加filterchain處理額外的空格

+0

這是越來越近了,但由於某些原因的屬性在前面有一個標籤,斷行;導致殺死再次失敗:未能解析參數:'15718 [exec]' – 2015-02-08 05:25:55

+0

啊......看來你還必須使用filterchain + striplinebreaks來完成這項工作。如果你可以將這些添加到你的答案中,那麼我可以選擇它。 – 2015-02-08 05:29:22

+0

啊,謝謝,沒有想到包含額外空格的pid文件。 – 2015-02-08 07:10:50